?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
一個(gè)模板引擎使您能夠在您的應(yīng)用程序中使用靜態(tài)模板文件。在運(yùn)行時(shí),模板引擎用實(shí)際值替換模板文件中的變量,并將模板轉(zhuǎn)換為發(fā)送給客戶(hù)端的HTML文件。這種方法使設(shè)計(jì)HTML頁(yè)面變得更加容易。
與Express一起使用的一些流行的模板引擎是Pug, Mustache和EJS。Express應(yīng)用程序生成器使用Jade作為默認(rèn)設(shè)置,但它也支持其他幾種。
請(qǐng)參閱模板引擎(Express wiki)以獲取可用于Express的模板引擎列表。另請(qǐng)參閱比較JavaScript模板引擎:Jade,Mustache,Dust等。
注意:Jade已更名為Pug。你可以繼續(xù)在你的應(yīng)用中使用Jade,它會(huì)工作得很好。但是,如果你想要模板引擎的最新更新,你必須在你的應(yīng)用中用Pug代替Jade。
要呈現(xiàn)模板文件,請(qǐng)?jiān)O(shè)置以下應(yīng)用程序設(shè)置屬性,并在app.js
由生成器創(chuàng)建的默認(rèn)應(yīng)用程序中設(shè)置:
views
,模板文件所在的目錄。例如:app.set('views', './views')
。這默認(rèn)為views
應(yīng)用程序根目錄中的目錄。
view engine
,要使用的模板引擎。例如,要使用Pug模板引擎:app.set('view engine', 'pug')
。
然后安裝相應(yīng)的模板引擎npm包; 例如安裝Pug:
$ npm install pug --save
符合Express的模板引擎(如Jade和Pug)會(huì)導(dǎo)出名為的函數(shù)__express(filePath, options, callback)
,res.render()
函數(shù)將被函數(shù)調(diào)用以呈現(xiàn)模板代碼。
一些模板引擎不遵循這個(gè)約定。該Consolidate.js通過(guò)映射所有流行的Node.js的模板引擎庫(kù)遵循此慣例,因此,無(wú)其他快捷方式。
在設(shè)置視圖引擎后,您不必在應(yīng)用程序中指定引擎或加載模板引擎模塊; Express在內(nèi)部加載模塊,如下所示(針對(duì)上述示例)。
app.set('view engine', 'pug')
創(chuàng)建一個(gè)名為Pug模板文件index.pug
的views
目錄,具有以下內(nèi)容:
html head title= title body h1= message
然后創(chuàng)建一個(gè)路徑來(lái)渲染index.pug
文件。如果該view engine
屬性未設(shè)置,則必須指定view
文件的擴(kuò)展名。否則,你可以省略它。
app.get('/', function (req, res) { res.render('index', { title: 'Hey', message: 'Hello there!' })})
當(dāng)您向主頁(yè)發(fā)出請(qǐng)求時(shí),該index.pug
文件將呈現(xiàn)為HTML。
注意:視圖引擎緩存不緩存模板輸出的內(nèi)容,只緩存底層模板本身。即使緩存打開(kāi),視圖仍然會(huì)在每次請(qǐng)求時(shí)重新呈現(xiàn)。
要詳細(xì)了解模板引擎如何在Express中工作,請(qǐng)參閱:“開(kāi)發(fā)用于Express的模板引擎”。