你只需要在页面上加载 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: 上面所有配置选项所组成的对象
  1. var env = new nunjucks.Environment();
  2. // extensions must be known at compile-time
  3. // async filters must be known at compile-time
  4. env.addFilter('asyncFilter', function(val, cb) {
  5. // do something
  6. }, true);

和 相同,只是编译字符串。