呈现与布局(没有expression)的玉模板

在快速渲染jade模板时,您可以使用'view options', { layout: true }来configuration应用程序,渲染的模板将自动插入到布局模板的body中。

我试图实现等效的行为从node.js渲染文件,但没有明确的框架(我只是build立一个更大的pipe道一部分的静态文件)。

似乎有两个select:

  • 加载主模板和布局,转换为函数,首先渲染模板,然后将结果传递给布局函数
  • 使用标准的模板inheritance和块结构,但是我明确地使用命名块

这些是唯一的select吗(这很公平,还是很棒的),还是我错过了一些诀窍?


编辑

如果有人感兴趣,下面是第一个选项的粗略剪辑:

 // 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); 

我相信答案是“不”,你不会错过任何诀窍。 你所概述的两个选项在我看来是使用翡翠生成文件的两个最直接的方法。 当然也有很多非玉的方法。 例如,您可以将内容与盘子方法合并,旧的String.replace ,或者将您的布局拆分为单独的页眉广告页脚片段文件,然后将它们按头部,主体,脚部顺序连接起来。