app.engine(ext, callback)

注册给定引擎的回调,用来渲染处理ext文件。
默认情况下,Express需要使用require()来加载基于文件扩展的引擎。例如,如果你尝试渲染一个foo.jade文件,Express在内部调用下面的内容,同时缓存require()结果供随后的调用,来加速性能。

  1. app.engine('jade', require('jade').__express);

使用下面的方法对于那些没有提供开箱即用的.__express方法的模板,或者你希望使用不同的模板引擎扩展。
比如,使用EJS模板引擎来渲染.html文件:

  1. app.engine('html', require('ejs').renderFile);

在这个例子中,EJS提供了一个.renderFile方法,这个方法满足了Express规定的签名规则:(path, options, callback),然而记住在内部它只是ejs.__express的一个别名,所以你可以在不做任何事的情况下直接使用.ejs扩展。
一些模板引擎没有遵循这种规范,[consolidate.js][17]库映射模板引擎以下面的使用方式,所以他们可以无缝的和Express工作。

  1. var engines = require('consolidate');
  2. app.engine('haml', engines.haml);
  3. app.engine('html', engines.hogan);