Simple API

如果你不需要深度定制,可以直接使用初级(higher-level) api 来加载和渲染模板。

render

nunjucks.render(name, [context], [callback])

渲染模式时需要两个参数,模板名 name 和数据 context。如果 callback 存在,当渲染完成后会被调用,第一个参数是错误,第二个为返回的结果;如果不存在,render 方法会直接返回结果,错误时会抛错。更多查看异步的支持

  1. var res = nunjucks.render('foo.html');
  2. var res = nunjucks.render('foo.html', { username: 'James' });
  3. nunjucks.render('async.html', function(err, res) {
  4. });

renderString

nunjucks.renderString(str, context, [callback])

render 类似,只是渲染一个字符串而不是渲染加载的模板。

  1. var res = nunjucks.renderString('Hello {{ username }}', { username: 'James' });

compile

nunjucks.compile(str, [env], [path]);

将给定的字符串编译成可重复使用的nunjucks模板对象。

  1. var template = nunjucks.compile('Hello {{ username }}');
  2. template.render({ username: 'James' });

configure

nunjucks.configure([path], [opts]);

传入 path 指定存放模板的目录,opts 可让某些功能开启或关闭,这两个变量都是可选的。path 的默认值为当前的工作目录,opts 提供以下功能:

  • autoescape(默认值: true) 控制输出是否被转义,查看 Autoescaping
  • throwOnUndefined(default: false) 当输出为 null 或 undefined 会抛出异常
  • trimBlocks(default: false) 自动去除 block/tag 后面的换行符
  • lstripBlocks(default: false) 自动去除 block/tag 签名的空格
  • watch(默认值: false) 当模板变化时重新加载。使用前请确保已安装可选依赖 chokidar
  • noCache(default: false) 不使用缓存,每次都重新编译
  • web 浏览器模块的配置项
    • useCache(default: false) 是否使用缓存,否则会重新请求下载模板
    • async(default: false) 是否使用 ajax 异步下载模板
  • express 传入 express 实例初始化模板设置
  • tags:(默认值: see nunjucks syntax) 定义模板语法,查看 Customizing Syntax
    configure 返回一个 Environment 实例, 他提供了简单的 api 添加过滤器 (filters) 和扩展 (extensions),可在 Environment 查看更多的使用方法。

注意: 简单的API (比如说上面的nunjucks.render) 通常会使用最近一次调用nunjucks.configure时的配置。由于这种做法是隐性的,它可能会渲染出意料之外的结果,所以在大多数情况下我们不推荐使用这类简单的API(特别是用到configure的情况);我们推荐使用var env = nunjucks.configure(…)创建一个独立的环境,并调用env.render(…)进行渲染。

  1. nunjucks.configure('views');
  2. // 在浏览器端最好使用绝对地址
  3. nunjucks.configure('/views');
  4. nunjucks.configure({ autoescape: true });
  5. nunjucks.configure('views', {
  6. autoescape: true,
  7. express: app,
  8. watch: true
  9. });
  10. var env = nunjucks.configure('views');
  11. // do stuff with env

installJinjaCompat

nunjucks.installJinjaCompat()

这个方法为了与 Jinja 更好的兼容,增加了一些适配 Python 的 API。但是 nunjucks 不是为了完全兼容 Jinja/Pyhton,这只为了帮助使用者查看。

增加了 TrueFalse,与 js 的 truefalse 相对应。并增加 Array 和 Object 使之适配 Python 风格的。查看源码能看到所有功能。

就是这么简单,如果希望自己定义模板加载等更多的个性化设置,那么可以继续往下看。