渲染玉模板与布局(无快递)

AJ.*_*AJ. 6 templates node.js pug

在express中渲染玉石模板时,您可以配置您的应用程序,'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);
Run Code Online (Sandbox Code Playgroud)

Pet*_*ons 3

我相信答案是“不”,你没有错过任何技巧。在我看来,您概述的两个选项是使用玉生成文件的两种最直接的方法。当然,还有很多非玉的方法。例如,您可以使用方法合并内容,String.replace或者将您的布局拆分为单独的页眉广告页脚片段文件,然后按头、正文、脚顺序连接它们。