一个模板引擎使您能够在您的应用程序中使用静态模板文件。在运行时,模板引擎用实际值替换模板文件中的变量,并将模板转换为发送给客户端的HTML文件。这种方法使设计HTML页面更加容易。
与Express一起使用的一些流行模板引擎是Pug, Mustache和EJS。该Express应用程序生成器使用Jade作为其默认的,但它也支持其它几个。
有关 可以与Express一起使用的模板引擎的列表,请参见模板引擎(Express Wiki)。另请参阅比较JavaScript模板引擎:Jade,Mustache,Dust等。
注意:Jade已重命名为Pug。您可以继续在您的应用程序中使用Jade,它将正常工作。但是,如果要对模板引擎进行最新更新,则必须在应用程序中用Pug替换Jade。
要渲染模板文件,请设置以下应用程序设置属性,在app.js
生成器创建的默认应用程序中进行设置:
views
,即模板文件所在的目录。例如:app.set('views', './views')
。这默认为views
应用程序根目录中的目录。view engine
,要使用的模板引擎。例如,使用帕格模板引擎:app.set('view engine', 'pug')
。
然后安装相应的模板引擎npm软件包;例如安装Pug:
$ npm install pug --save
兼容Express的模板引擎(例如Jade和Pug)导出名为的函数
__express(filePath, options, callback)
,该res.render()
函数调用该函数以呈现模板代码。 某些模板引擎不遵循此约定。该Consolidate.js 通过映射所有流行的Node.js的模板引擎库遵循此惯例,因此,无缝内快车。
设置视图引擎后,您无需指定引擎或在应用程序中加载模板引擎模块。Express在内部加载模块,如下所示(对于上面的示例)。
app.set('view engine', 'pug')
index.pug
在views
目录中创建一个名为Pug的模板文件,内容如下:
html
head
title= title
body
h1= message
然后创建路由以渲染index.pug
文件。如果view engine
未设置该属性,则必须指定view
文件的扩展名。否则,您可以忽略它。
app.get('/', function (req, res) {
res.render('index', { title: 'Hey', message: 'Hello there!' })
})
当您请求主页时,index.pug
文件将呈现为HTML。
注意:视图引擎缓存不缓存模板输出的内容,仅缓存基础模板本身。即使打开了缓存,该视图仍会与每个请求一起重新呈现。
要了解有关模板引擎如何在Express中工作的更多信息,请参见: “为Express开发模板引擎”。