您好,登錄后才能下訂單哦!
這篇文章主要講解了“nodejs模板引擎有什么作用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“nodejs模板引擎有什么作用”吧!
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功能。
感謝各位的閱讀,以上就是“nodejs模板引擎有什么作用”的內容了,經過本文的學習后,相信大家對nodejs模板引擎有什么作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。