nodejs模板引擎是指渲染模板,可以使用模板檔案來動態產生HTML文件,在產生時又可以依照一定的規則將應用程式裡的資料整合進HTML檔案。常見的node模板引擎有:Mustache、Dust.js、doT、Jade、EJS、swig等。
本教學操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。
在一個web應用程式中,如果只是使用伺服器端程式碼來寫客戶端html程式碼,前後端不分離,那麼就會造成很大的工作量,而且寫出來的程式碼會比較難閱讀和維護。如果只是使用客戶端的靜態的HTML文件,那麼後端的邏輯也會比較難以融入客戶端的HTML程式碼中。
為了方便維護,且讓後端邏輯能夠比較好的融入前端的HTML程式碼中,同時便於維護,許多第三方開發者就開發了各種Nodejs模板引擎。
那麼什麼是模板引擎,我們可以分開理解。
模板:一個模子(結構)。供你套數據,並且依據不同數據去走不同的邏輯
引擎:一個處理器(編譯、運行),最後渲染出HTML代碼
所以,合起來理解模板引擎:使用範本文件來動態產生HTML文件,在產生時又可以依照一定的規則將應用程式裡的資料整合進HTML檔。類似後台的jsp語言。
簡單來說,模板引擎就是渲染模板。
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中文網其他相關文章!