模板引擎使你能够在应用程序中使用静态模板文件,在运行时,模板引擎用实际值替换模板文件中的变量,并将模板转换为发送到客户端的HTML文件,这种方法能够更轻松地设计HTML页面。javascript
一些与Express一块儿使用的流行模板引擎是Pug、Mustache和EJS,Express应用程序生成器使用Jade做为其默认值,但它也支持其余几个。html
有关可与Express一块儿使用的模板引擎列表,请参阅模板引擎(Express wiki),另请参阅比较JavaScript模板引擎:Jade、Moustache、Dust等。java
注意:Jade已改名为 Pug,你能够继续在你的应用中使用Jade,它能够正常工做,可是,若是你想要模板引擎的最新更新,则必须在应用程序中将Jade替换为Pug。
要渲染模板文件,请设置如下应用程序设置属性,在由生成器建立的默认应用程序app.js
中设置:git
views
,模板文件所在的目录,例如:app.set('views', './views')
,默认为应用程序根目录中的views
目录。view engine
,使用的模板引擎,例如,要使用Pug模板引擎:app.set('view engine', 'pug')
。而后安装相应的模板引擎npm包,例如安装Pug:github
$ npm install pug --save
兼容Express的模板引擎(如Jade和Pug)导出名为__express(filePath, options, callback)
的函数,该函数由res.render()
函数调用以渲染模板代码。某些模板引擎不遵循此约定,Consolidate.js库遵循此约定,映射全部流行的Node.js模板引擎,所以能够在Express中无缝工做。express
设置视图引擎后,你没必要在应用程序中指定引擎或加载模板引擎模块,Express在内部加载模块,以下所示(对于上面的示例)。npm
app.set('view engine', 'pug')
在views
目录中建立一个名为index.pug
的Pug模板文件,其中包含如下内容:segmentfault
html head title= title body h1= message
而后建立一个路由来渲染index.pug
文件,若是未设置view engine
属性,则必须指定视图文件的扩展名,不然,你能够省略它。api
app.get('/', function (req, res) { res.render('index', { title: 'Hey', message: 'Hello there!' }) })
当你向主页发出请求时,index.pug
文件将渲染为HTML。缓存
注意:视图引擎缓存不会缓存模板输出的内容,只缓存底层模板自己,即便缓存已打开,仍会每一个请求从新渲染视图。
要了解有关模板引擎如何在Express中工做的更多信息,请参阅:“为Express开发模板引擎”。