你只需要在页面上加载 templates.js
,系统会自动使用预编译的模板,没有改变的必要。
这个脚本还有很多可选项,直接调用 nunjucks-precompile
可以看到更多信息。注意所有的异步过滤器需要当参数传入,因为编译时需要他们,你可以使用 -a
参数来传入(如 -a foo,bar,baz
)。如果只使用同步过滤器则不需要处理。
如果你希望通过代码来预编译模板,nunjucks 也提供了 api,特别是在使用扩展和异步过滤器的时候需要使用这些 api。可以将 Environment
的实例传给预编译器,其中将包括扩展和过滤器。你需要在客户端和服务器使用同一个 Environment
对象保证同步。
- asFunction: 生成一个函数
- force: 如果出错还继续编译
- env:
Environment
的实例 - include: 包括额外的文件和文件夹 (folders are auto-included, files are auto-excluded)
- exclude: 排除额外的文件和文件夹 (folders are auto-included, files are auto-excluded)
- wrapper:
function(templates, opts)
自定义预编译模板的输出格式。这个函数必须返回一个字符串- opts: 上面所有配置选项所组成的对象
var env = new nunjucks.Environment();
// extensions must be known at compile-time
// async filters must be known at compile-time
env.addFilter('asyncFilter', function(val, cb) {
// do something
}, true);
和 相同,只是编译字符串。