2011-08-10 177 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