Simple API
如果你不需要深度定制,可以直接使用初级(higher-level) api 来加载和渲染模板。
render
nunjucks.render(name, [context], [callback])
渲染模式时需要两个参数,模板名 name 和数据 context。如果 callback 存在,当渲染完成后会被调用,第一个参数是错误,第二个为返回的结果;如果不存在,render
方法会直接返回结果,错误时会抛错。更多查看异步的支持。
var res = nunjucks.render('foo.html');
var res = nunjucks.render('foo.html', { username: 'James' });
nunjucks.render('async.html', function(err, res) {
});
renderString
nunjucks.renderString(str, context, [callback])
与 render
类似,只是渲染一个字符串而不是渲染加载的模板。
var res = nunjucks.renderString('Hello {{ username }}', { username: 'James' });
compile
nunjucks.compile(str, [env], [path]);
将给定的字符串编译成可重复使用的nunjucks模板对象。
var template = nunjucks.compile('Hello {{ username }}');
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(…)
进行渲染。
nunjucks.configure('views');
// 在浏览器端最好使用绝对地址
nunjucks.configure('/views');
nunjucks.configure({ autoescape: true });
nunjucks.configure('views', {
autoescape: true,
express: app,
watch: true
});
var env = nunjucks.configure('views');
// do stuff with env
installJinjaCompat
nunjucks.installJinjaCompat()
这个方法为了与 Jinja 更好的兼容,增加了一些适配 Python 的 API。但是 nunjucks 不是为了完全兼容 Jinja/Pyhton,这只为了帮助使用者查看。
增加了 True
和 False
,与 js 的 true
和 false
相对应。并增加 Array 和 Object 使之适配 Python 风格的。查看源码能看到所有功能。
就是这么简单,如果希望自己定义模板加载等更多的个性化设置,那么可以继续往下看。