首頁  >  文章  >  web前端  >  nodejs模板引擎是什麼

nodejs模板引擎是什麼

青灯夜游
青灯夜游原創
2021-11-23 14:20:483588瀏覽

nodejs模板引擎是指渲染模板,可以使用模板檔案來動態產生HTML文件,在產生時又可以依照一定的規則將應用程式裡的資料整合進HTML檔案。常見的node模板引擎有:Mustache、Dust.js、doT、Jade、EJS、swig等。

nodejs模板引擎是什麼

本教學操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。

模板引擎的介紹

在一個web應用程式中,如果只是使用伺服器端程式碼來寫客戶端html程式碼,前後端不分離,那麼就會造成很大的工作量,而且寫出來的程式碼會比較難閱讀和維護。如果只是使用客戶端的靜態的HTML文件,那麼後端的邏輯也會比較難以融入客戶端的HTML程式碼中。

為了方便維護,且讓後端邏輯能夠比較好的融入前端的HTML程式碼中,同時便於維護,許多第三方開發者就開發了各種Nodejs模板引擎。

那麼什麼是模板引擎,我們可以分開理解。

模板:一個模子(結構)。供你套數據,並且依據不同數據去走不同的邏輯

引擎:一個處理器(編譯、運行),最後渲染出HTML代碼

所以,合起來理解模板引擎:使用範本文件來動態產生HTML文件,在產生時又可以依照一定的規則將應用程式裡的資料整合進HTML檔。類似後台的jsp語言。

簡單來說,模板引擎就是渲染模板。

nodejs範本引擎總和與比較

Mustache

官網見:http://mustache.github.io/

Mustache是​​一個非常簡單易用的模板引擎,稱為無邏輯的模板引擎,可以用於HTML、設定檔、原始碼等等場景。 

之所以稱為無邏輯的模板引擎,是因為它沒有if語句、else條件、for迴圈等結構體。只有標籤,使用值來替換標籤,值可以是哈希或對象,就這麼簡單。

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

Mustache支援主流的程式語言,例如Ruby, JavaScript, Python, Erlang, node.js, PHP, Perl, Perl6, Objective-C, Java,Android, C , Go, Lua等。 

Mustache也可以與編輯器TextMate, Vim, Emacs, Coda, Atom等好結合。

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

Mustache (1)的靈感來自於ctemplate,並於2009年底發布第一版。第一個版本的模板引擎使用Ruby語言實現,運行YAML模板文字。採用的主要原則有:一是強調“無邏輯”,沒有顯式的控制流程語句,所有控制都由數據驅動;二是強調“邏輯與表示的分離”,不可能將應用程式邏輯嵌入到模板中。

Handlebars

官網:< http://handlebarsjs.com/>

Handlebars.js是Chris Wanstrath創建的Mustache模板語言的擴展。 Handlebars.js和Mustache都是無邏輯模板語言,保持視圖和程式碼分離。 

#一般來說,Handlebars.js範本的語法是Mustache範本的超集。

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

Handlebars允許模板被預先編譯,並包含到JavaScript程式碼中,使得啟動時間更短。 

Handlebars不相容Mustache的幾點: 

* Handlebars預設不執行遞迴查找,除非在編譯時compat標誌必須設定為啟用此功能。使用者應注意,啟用此標誌會產生效能成本。 

* 不支援可選的Mustache風格的Lambdas表達式。

* 不支援備用分隔符號

Dust.js

#官網:< http://www.dustjs.com/>

Dust是一個Javascript模板引擎,它繼承了ctemplate語言風格,並設計為在伺服器和瀏覽器上非同步運行。 

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

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

* Dust鼓勵將邏輯移到資料模型。可以在模型中建立函數,然後透過模板調用,可以完全控制模板如何呈現,而不會使邏輯混亂。 

*非同步模板加載,渲染和串流。故不必預先載入模板。 

*可組合模板,支援部分包含和動態模板區塊,將模板拼接在一起,實現手動建立佈局。 

* HTML安全,格式無關。 Dust透過安全地轉義數據,防止跨站點腳本攻擊。 

*高效能。在性能和功能之間取得平衡。雖然它沒有Mustache那麼快,但它的非同步性意味著可以更快地渲染大模板。 

* Dust工作在JavaScript。

Underscore.js

官網:< http://underscorejs.org/>

Underscore是一個JavaScript庫,提供了一系列有用的函數式程式設計幫助程序,而不擴展任何內建物件。 

Underscore提供了超過100個函數,支援map、filter、invoke等特性,以及函數綁定、JavaScript模板、建立快速索引、深度等價測試等。

doT

官網:< http://olado.github.io/doT/> 

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

* 如果模板引擎在客戶端和伺服器端都需要使用 

* 如果模板需要龐大的邏輯,而且也想讓應用程式跑得很快 

* 若需要預先編譯的範本

Jade

#官網:< http://jade-lang.com/> 

使用這個模板引擎,可以讓程式碼寫得更少,開發很輕鬆。但在Node.js環境使用比較費時,因為必須先把檔案轉換成HTML,再轉換成Jade。

EJS

官網:< http://ejs.co/>

EJS是CanJS預設的範本語言,它提供了與Observes的即時綁定的使用。 EJS非常容易使用,在模板中寫入想要的HTML,以及一些表示動態行為的魔法標籤即可。 JES不支援block功能。

swig

Swig沒有抽象的HTML語法,但可以用Swig填滿Angular.js的語法,支援block功能。

更多node相關知識,請造訪:nodejs 教學! !

以上是nodejs模板引擎是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn