【发布时间】:2015-08-21 18:01:02
【问题描述】:
框架:node.js / express.js / Jade
问题:在生产环境中,当一个jade文件通过express渲染时,jade缓存是它所以未来的渲染速度更快。
当我启动 node.js 应用程序时,如何预编译(或)预渲染(如预热)所有的翡翠文件,以便在请求开始时它已经在缓存中......
我可以使用文件夹递归,我只需要知道如何预编译(或)预渲染。
这可能吗?
【问题讨论】:
框架:node.js / express.js / Jade
问题:在生产环境中,当一个jade文件通过express渲染时,jade缓存是它所以未来的渲染速度更快。
当我启动 node.js 应用程序时,如何预编译(或)预渲染(如预热)所有的翡翠文件,以便在请求开始时它已经在缓存中......
我可以使用文件夹递归,我只需要知道如何预编译(或)预渲染。
这可能吗?
【问题讨论】:
Jade 内置了模板预编译和缓存。
只需将cache: true 选项指定为jade.compileFile,然后遍历所有模板文件。
var options = {cache: true};
// iterate/recurse over your jade template files and compile them
jade.compileFile('./templates/foo.jade', options);
// Jade will load the compiled templates from cache (the file path is the key)
jade.renderFile('./templates/foo.jade');
【讨论】:
jade.renderFile,但我怀疑如果您在 express 中使用 Jade 作为视图引擎,它将利用内置缓存。
如果你不使用任何参数,你可以使用 grunt 或 gulp 直接将 Jade 模板编译成 HTML 并让它监视文件修改
从命令行尝试:
jade view/map-beacons.jade -D
如果您确实需要使用参数,我会使用类似 Andrew Lavers 的答案。
compileFile 返回一个可用于传入参数的函数,即fn({ myJsVar: 'someValue' })
命令行中还有一个客户端选项,但我没有发现它有任何用处:
jade view/map-beacons.jade -cD
【讨论】: