當您以快速渲染jade模板時,可以使用'view options', { layout: true }
配置您的應用程序,並且呈現的模板將自動插入到佈局模板的body
本地。使用佈局呈現玉石模板(無快速)
我試圖實現等效行爲從node.js呈現文件,但沒有明確的框架(我只是建立一個更大的管道的一部分的靜態文件)。
似乎有兩種選擇:
- 加載兩個主要的模板和佈局,轉變爲功能,首先呈現模板,然後將結果傳遞給佈局功能
- 使用標準模板繼承和塊結構,但後來我明確使用命名塊
這些是唯一的選擇(這足夠公平,仍然很棒),還是我錯過了一些訣竅?
編輯
這裏是萬一有人第一個選項的粗剪感興趣:
// Load jade
var jade = require('jade');
// Load actual template text
var layout = fs.readFileSync('layout-path', 'utf8')
tpl = fs.readFileSync('tpl-path', 'utf8');
// Compile template rendering function
layout = jade.compile(layout, { pretty: true, filename: 'layout-path' });
tpl = jade.compile(tpl, { pretty: true, filename: 'tpl-path' });
// Render jade template, passing in the info
var output = layout({ body: tpl({ local1: some_var, local2: some_var }) }
// Write rendered content to file
fs.writeFileSync('output.html', output);
我認爲Express 3.0會刪除佈局(至少在默認情況下啓用),以支持使用命名塊的模板繼承,所以這可能有助於您的決定:http://groups.google.com/group/express -js/browse_thread/thread/2ec558510be6d0a4(並且在初始化一個新項目時也可以看到express.js生成的存根:https://github.com/visionmedia/express/blob/master/bin/express)。 – mna 2012-02-22 16:52:48
@PuerkitoBio感謝您的信息;值得指出,但我真正的問題是*是這些做它的唯一方法*?將這些類型的東西放在一起的人通常會在常見用例中嵌入一條短路 - 我並不總是很聰明,無法找到它們! – 2012-02-22 19:08:49
@AJ。感謝該片段。 – 2013-04-22 11:38:50