app.engine(ext, callback)
注册给定引擎的回调,用来渲染处理ext文件。
默认情况下,Express需要使用require()
来加载基于文件扩展的引擎。例如,如果你尝试渲染一个foo.jade
文件,Express在内部调用下面的内容,同时缓存require()
结果供随后的调用,来加速性能。
app.engine('jade', require('jade').__express);
使用下面的方法对于那些没有提供开箱即用的.__express
方法的模板,或者你希望使用不同的模板引擎扩展。
比如,使用EJS模板引擎来渲染.html
文件:
app.engine('html', require('ejs').renderFile);
在这个例子中,EJS提供了一个.renderFile
方法,这个方法满足了Express规定的签名规则:(path, options, callback)
,然而记住在内部它只是ejs.__express
的一个别名,所以你可以在不做任何事的情况下直接使用.ejs
扩展。
一些模板引擎没有遵循这种规范,[consolidate.js][17]库映射模板引擎以下面的使用方式,所以他们可以无缝的和Express工作。
var engines = require('consolidate');
app.engine('haml', engines.haml);
app.engine('html', engines.hogan);