4.使用带Express的模板引擎 | 4. Using template engines with Express
使用Express模板引擎
一个模板引擎
使您能够在您的应用程序中使用静态模板文件。在运行时,模板引擎
用实际值替换模板文件中的变量,并将模板转换为发送给客户端的HTML文件。这种方法使设计HTML页面变得更加容易。
与Express一起使用的一些流行的模板引擎是Pug, Mustache和EJS。Express应用程序生成器使用Jade作为默认设置,但它也支持其他几种。
请参阅模板引擎(Express wiki)以获取可用于Express的模板引擎列表。另请参阅比较JavaScript模板引擎:Jade,Mustache,Dust等。
注意
:Jade已更名为Pug。你可以继续在你的应用中使用Jade,它会工作得很好。但是,如果你想要模板引擎的最新更新,你必须在你的应用中用Pug代替Jade。
要呈现模板文件,请设置以下应用程序设置属性,并在app.js
由生成器创建的默认应用程序中设置:
views
,模板文件所在的目录。例如:app.set('views', './views')
。这默认为views
应用程序根目录中的目录。
view engine
,要使用的模板引擎。例如,要使用Pug模板引擎: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')
创建一个名为Pug模板文件index.pug
的views
目录,具有以下内容:
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的模板引擎”。