2012-03-07 98 views
4

我喜歡小鬍子風格的模板語言 - 我目前使用mustache和icanhasmustache,但我也檢出了handlebarshogan類鬍鬚模板語言與延伸?

但是我需要一個'擴展'類型的功能,以允許孩子引用特定的父模板。我無法找到關於如何在上述任何一箇中實現擴展的文檔,但我已經看到(從隨機的githib gists)其他人似乎正在這樣做。

注意:我知道包含(有時稱爲partials)的存在,但是這些似乎是爲父母引用特定的孩子。這與我所尋找的是相反的 - 在這種情況下,子模板是真正的「基礎」文檔,父母僅僅是偶然的,所以我希望孩子能夠控制關係。

+0

也許這將有助於(假的模板擴展mustache.js)http://stackoverflow.com/questions/7925931/can-mustache-templates-do-template-extension – WTK 2012-03-07 11:01:11

+0

@WTK謝謝。我已經看到了答案 - 鬍子本身並沒有這樣做。我的問題可能是:還有別的嗎?在打勾的答案中使用每個#2的靜態函數意味着您需要每個父代的函數。 – mikemaccana 2012-03-07 11:07:52

回答

8

2016回答

如果您使用快遞,佈局中間件需要layout選項,這可能對你有用。

res.render('page', { layout: 'mylayout.jade' }) 

原來的答案:極少數JS庫實行「extends'類型的功能。

  • Nun非常喜歡鬍子,但服務器只(而不再維持)
  • Swig已經延伸,但不是很鬍子等。
  • Jade具有延伸,並在瀏覽器的工作原理,但並不像鬍子

我上Dust.JS解決,因爲它使用的鬍鬚狀的部分,適用於客戶端和服務器,並支持對父首要塊從孩子,給予有效的延伸支持。

參見灰塵文檔,「塊和內聯局部模板」部分:

{>base_template/} 
{<title} 
    Child Title 
{/title} 
{<main} 
    Child Content 
{/main} 

重寫「標題」,並從父模板「主」部分,保持周圍的內容。