溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nodejs模板引擎有什么作用

發(fā)布時(shí)間:2021-11-23 14:35:47 來(lái)源:億速云 閱讀:546 作者:iii 欄目:web開(kāi)發(fā)

這篇文章主要講解了“nodejs模板引擎有什么作用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“nodejs模板引擎有什么作用”吧!

nodejs模板引擎是指渲染模板,可以使用模板文件來(lái)動(dòng)態(tài)生成HTML文件,在生成時(shí)又可以按照一定的規(guī)則將應(yīng)用程序里的數(shù)據(jù)整合進(jìn)HTML文件。常見(jiàn)的node模板引擎有:Mustache、Dust.js、doT、Jade、EJS、swig等。

nodejs模板引擎有什么作用

本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版,DELL G3電腦。

模板引擎的介紹

在一個(gè)web應(yīng)用程序中,如果只是使用服務(wù)器端代碼來(lái)編寫客戶端html代碼,前后端不分離,那么會(huì)造成很大的工作量,而且寫出來(lái)的代碼會(huì)比較難以閱讀和維護(hù)。如果只是使用客戶端的靜態(tài)的HTML文件,那么后端的邏輯也會(huì)比較難以融入到客戶端的HTML代碼中。

為了便于維護(hù),且使后端邏輯能夠比較好的融入前端的HTML代碼中,同時(shí)便于維護(hù),很多第三方開(kāi)發(fā)者就開(kāi)發(fā)出了各種Nodejs模板引擎。

那么什么是模板引擎,我們可以分開(kāi)理解。

模板:一個(gè)模子(結(jié)構(gòu))。供你套數(shù)據(jù),并且依據(jù)不同數(shù)據(jù)去走不同的邏輯

引擎:一個(gè)處理器(編譯、運(yùn)行),最后渲染出HTML代碼

所以,合起來(lái)理解模板引擎:使用模板文件來(lái)動(dòng)態(tài)生成HTML文件,在生成時(shí)又可以按照一定的規(guī)則將應(yīng)用程序里的數(shù)據(jù)整合進(jìn)HTML文件。類似后臺(tái)的jsp語(yǔ)言。

簡(jiǎn)單來(lái)說(shuō),模板引擎就是渲染模板。

nodejs模板引擎匯總和對(duì)比

Mustache

官網(wǎng)見(jiàn):http://mustache.github.io/

Mustache是一個(gè)非常簡(jiǎn)單易用的模板引擎,號(hào)稱無(wú)邏輯的模板引擎,可以用于HTML、配置文件、源代碼等等場(chǎng)景。

之所以稱之為無(wú)邏輯的模板引擎,是因?yàn)樗鼪](méi)有if語(yǔ)句、else條件、for循環(huán)等結(jié)構(gòu)體。只有標(biāo)簽,使用值來(lái)替換標(biāo)簽,值可以是哈?;?qū)ο?,就這么簡(jiǎn)單。

Mustache模板有兩種定義,Mustache (1)和Mustache (5)

Mustache支持主流的編程語(yǔ)言,比如Ruby, JavaScript, Python, Erlang, node.js, PHP, Perl, Perl6, Objective-C, Java,Android, C++, Go, Lua等。

Mustache也可以很好地與編輯器TextMate, Vim, Emacs, Coda, Atom等相結(jié)合。

Mustache (1)手冊(cè):< http://mustache.github.io/mustache.5.html>
Mustache (5) 手冊(cè):< http://mustache.github.io/mustache.1.html>

Mustache (1)的靈感來(lái)自于ctemplate,并于2009年底發(fā)布第一版。第一個(gè)版本的模板引擎使用Ruby語(yǔ)言實(shí)現(xiàn),運(yùn)行YAML模板文本。采用的主要原則有:一是強(qiáng)調(diào)“無(wú)邏輯”,沒(méi)有顯式的控制流程語(yǔ)句,所有控制都由數(shù)據(jù)驅(qū)動(dòng);二是強(qiáng)調(diào)“邏輯與表示的分離”,不可能將應(yīng)用程序邏輯嵌入到模板中。

Handlebars

官網(wǎng):< http://handlebarsjs.com/>

Handlebars.js是Chris Wanstrath創(chuàng)建的Mustache模板語(yǔ)言的擴(kuò)展。Handlebars.js和Mustache都是無(wú)邏輯模板語(yǔ)言,保持視圖和代碼分離。

一般來(lái)說(shuō),Handlebars.js模板的語(yǔ)法是Mustache模板的超集。

其基本語(yǔ)法可以參考Mustache的幫助頁(yè):< http://mustache.github.com/mustache.5.html>

Handlebars允許模板被預(yù)編譯,并包含到JavaScript代碼中,使得啟動(dòng)時(shí)間更短。

Handlebars不兼容Mustache的幾點(diǎn):

* Handlebars默認(rèn)不執(zhí)行遞歸查找,除非在編譯時(shí)compat標(biāo)志必須設(shè)置為啟用此功能。用戶應(yīng)注意,啟用此標(biāo)志會(huì)產(chǎn)生性能成本。

* 不支持可選的Mustache風(fēng)格的Lambdas表達(dá)式。

* 不支持備用分隔符

Dust.js

官網(wǎng):< http://www.dustjs.com/>

Dust是一個(gè)Javascript模板引擎,它繼承了ctemplate語(yǔ)言風(fēng)格,并設(shè)計(jì)為在服務(wù)器和瀏覽器上異步運(yùn)行。

與其它模板引擎相比,Dust不是無(wú)邏輯的,只是有較少的邏輯。

*不能在Dust模板中編寫任意Javascript。但是,您仍然有基本的邏輯運(yùn)算符,如比較,小于/大于,存在/不存在。這在模板可讀性和數(shù)據(jù)控制之間達(dá)到平衡。

* Dust鼓勵(lì)將邏輯移動(dòng)到數(shù)據(jù)模型??梢栽谀P椭袆?chuàng)建函數(shù),然后通過(guò)模板調(diào)用,可以完全控制模板如何呈現(xiàn),而不會(huì)使邏輯混亂。

*異步模板加載,渲染和流式傳輸。故不必預(yù)加載模板。

*可組合模板,支持部分包含和動(dòng)態(tài)模板塊,將模板拼接在一起,實(shí)現(xiàn)手動(dòng)構(gòu)建布局。

* HTML安全,格式無(wú)關(guān)。Dust通過(guò)安全地轉(zhuǎn)義數(shù)據(jù),防止跨站點(diǎn)腳本攻擊。

*高性能。在性能和功能之間取得平衡。雖然它沒(méi)有Mustache那么快,但它的異步性意味著可以更快地渲染大模板。

* Dust工作在JavaScript。

Underscore.js

官網(wǎng):< http://underscorejs.org/>

Underscore是一個(gè)JavaScript庫(kù),提供了一系列有用的函數(shù)式編程幫助程序,而不擴(kuò)展任何內(nèi)置對(duì)象。

Underscore提供了超過(guò)100個(gè)函數(shù),支持map、filter、invoke等特性,以及函數(shù)綁定、JavaScript模板、創(chuàng)建快速索引、深度等價(jià)測(cè)試等。

doT

官網(wǎng):< http://olado.github.io/doT/>

doT并非最易于使用的模板引擎,但它滿足以下需求:

* 如果模板引擎在客戶端和服務(wù)器端都需要使用

* 如果模板需要龐大的邏輯,而且還想讓應(yīng)用程序跑得很快

* 如果需要預(yù)編譯的模板

Jade

官網(wǎng):< http://jade-lang.com/>

使用這個(gè)模板引擎,可以讓代碼寫得更少,開(kāi)發(fā)很輕松。但在Node.js環(huán)境使用比較費(fèi)時(shí),因?yàn)楸仨毾劝盐募D(zhuǎn)換為HTML,再轉(zhuǎn)換成Jade。

EJS

官網(wǎng):< http://ejs.co/>

EJS是CanJS默認(rèn)的模板語(yǔ)言,它提供了與Observes的實(shí)時(shí)綁定的使用。EJS非常易于使用,在模板中寫入想要的HTML,以及一些表示動(dòng)態(tài)行為的魔法標(biāo)簽即可。JES不支持block功能。

swig

Swig沒(méi)有抽象的HTML語(yǔ)法,但可以用Swig填充Angular.js的語(yǔ)法,支持block功能。

感謝各位的閱讀,以上就是“nodejs模板引擎有什么作用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)nodejs模板引擎有什么作用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI