2011-08-10 139 views
13

我正在寻找一种方法来对一组.html文件进行模板继承。客户端(JavaScript)Django/Jinja模板继承

比方说,我有一个base.html文件,它具有我网站所有页面的常用HTML,即页眉,页脚等。每个页面(包括主(索引)页面)都需要从此模板HTML文件继承。

现在,这是可以在服务器端使用Django's Jinja template langauge。但这对我来说不是一个好的解决方案。我的HTML页面远程存储,我无法控制存储它们的服务器。这必须在客户端完成,无论是否使用JavaScript。

Somebody asked about this before,我发现的唯一一半的解决方案是使用Mustache's partials,这并不是真正的工作。

有没有人知道在客户端执行此操作的方法?

回答

2

1. 是的,Dustjs可以“有一个模板继承其内容从一个共同的基础模板批量”

查看Dustjs文档,在这里:Dustjs,“块和内联部分”部分。

(我张贴的答案,一个相关的问题,在这里:https://stackoverflow.com/a/12432034/694469


2. 还有正在进行的一些工作在加入模板继承Handlebars,看我的另一个答案“这个问题的另一个版本:https://stackoverflow.com/a/12432490/694469

它链接到这个GitHub的问题:https://github.com/wycats/handlebars.js/issues/208,而这篇博客文章:Template Inheritance for Handlebars

0

jQuery模板有一个{{wrap}}模板标签 可用于此。

+3

我不要认为这允许模板继承,就像小胡子的部分一样。你确定吗? –

1

玉提供了完整的模板继承:https://github.com/visionmedia/jade#a11

除完全覆盖块,还可以追加或预先准备的内容一个块。下面是从文档劫持的例子:

中的layout.html定义一个基本模板:

html 
    head 
    h1 My Site - #{title} 
    block scripts 
     script(src='/jquery.js') 
    body 
    block content 
    block foot 
     #footer 
     p some footer content 

附加一些脚本标记,更换内容部分content.html:

extends layout 

block append head 
    script(src='/vendor/three.js') 
    script(src='/game.js') 

block content 
    .sidebar 
    block sidebar 
     p nothing 
    .primary 
    block primary 
     p nothing