搜尋
首頁web前端js教程輕量級JavaScript模版引擎mustache.js如何使用程式碼詳解

我們將為大家詳解Mustache.js輕量級J​​avaScript模版引擎使用方法。

簡單範例


function show(t) {
 $("#content").html(t);
}
var view = {
 title: 'YZF',
 cacl: function () {
 return 6 + 4;
 }
};
$("#content").html(Mustache.render("{{title}} spends {{cacl}}", view));

可以很明顯的看出Mustache模板的語法,只需要使用{{和}}包含起來就可以了,裡面放上物件的名稱。

透過本範例也可以看出,如果指定的屬性為函數的時候,不會輸出函數裡面的內容,而是先執行函數,然後將傳回的結果顯示出來。

不轉義HTML標籤


var view = {
 name: "YZF",
 company: "<b>ninesoft</b>"
};
show(Mustache.render("{{name}} <br /> {{company}} <br />{{{company}}}<br/>{{&company}}", view));

透過這個範例可以看出Mustache預設是會將值裡面的html標記進行轉義的,但是有時候我們不需要。

所以這裡我們可以用{{{和}}}包含起來,或是{{和}}包含,那麼Mustache就不會轉義裡面的html標記。

綁定子屬性的值


var view = {
 "name": {
 first: "Y",
 second: "zf"
 },
 "age": 21
};
show(Mustache.render("{{name.first}}{{name.second}} age is {{age}}", view));

相信看到第一個範例的時候,就會有人想到能不能綁定子屬性,如果你努力看下去了。那麼恭喜你,現在就是解決你的需求的方式,僅僅只需要通過.來使用子屬性即可。

條件式選擇是否渲染指定部分


var view = {
 person: false
};
show(Mustache.render("eff{{#person}}abc{{/person}}", view));

問題總是不斷,如果我們還需要能夠根據我們給的值,決定是否渲染某個部分,那麼現在就可以解決這個問題,當然還要提示的就是不只是false會導致不渲染指定部分。

null,空數組,0,空字串一樣有效。語法上面比較簡單,就是用{{#key}} ... {{/key}}來控制中間的內容。

循環輸出


var view = {
 stooges: [
 { "name": "Moe" },
 { "name": "Larry" },
 { "name": "Curly" }
 ]
};
show(Mustache.render("{{#stooges}}{{name}}<br />{{/stooges}}", view));

#只學會上面的方式,大部分地方你都解決了,但是還是會出現麻煩的地方,就是循環輸出,如果你一個一個寫,相信會很煩躁,當然Mustache不會讓我們失望,它也給出瞭如何循環輸出的方式,這裡是將一個由對象組成的數組輸出,如果我們輸出的是數組,就需要用{{.}}來取代{{name}}。

循環輸出指定函數處理後傳回的值


var view = {
 "beatles": [
 { "firstname": "Johh", "lastname": "Lennon" },
 { "firstname": "Paul", "lastname": "McCartney" }
 ],
 "name": function () {
 return this.firstname + this.lastname;
 }
};
show(Mustache.render("{{#beatles}}{{name}}<br />{{/beatles}}", view));

循環輸出是有了,但是我們還想後期進行加工。那麼這個就完全符合你的需要,因為Mustache會將陣列中的值傳遞給你的函數,輸出你函數回傳的值。這裡我們可以看到最外層是數組,只要在裡面使用函數那麼外層的數組就會作為這個函數的參數傳遞進去。

自訂函數


var view = {
 "name": "Tater",
 "bold": function () {
 return function (text, render) {
   return render(text) + "<br />";
 }
 }
}
show(Mustache.render("{{#bold}}{{name}}{{/bold}}", view));

上面我們都是用的變數當節,那麼我們現在用函數當節,會有什麼效果呢。

它會呼叫我們函數傳回的函數,並將節中間的原始字串作為第一個參數,預設的解釋器作為第二個參數,那麼我們就可以自行加工。

反義節


var view = {
 "repos": []
};
show(Mustache.render("{{#repos}}{{.}}{{/repos}}{{^repos}}no repos{{/repos}}", view));

上面我們也用節,但是只可以選擇是否輸出某個部分。所以這裡我們彌補一下。

如果我們使用了{{^和}}來定義節的話,那麼這個部分只會在裡面的值為空,null,空數組,空字串的時候才會顯示。那我們就可以實現了if else的效果了。

部分模板


var view = {
 names: [
 { "name": "y" },
 { "name": "z" },
 { "name": "f" }
 ]
};
var base = "<h2 id="Names">Names</h2>{{#names}}{{>user}}{{/names}}";
var name = "<b>{{name}}</b>";
show(Mustache.render(base, view, { user: name }));

Mustache雖然節約了很多時間,但是我們定義了很多模板,但是彼此之間無法互相嵌套使用,也會造成繁瑣。

所以這裡我們還要介紹如何定義部分模板,用來在其他模板裡面使用,這裡使用其他模板的方式只是{{>templetename}}。

最大的差異就是Mustache.render方法有了第三個參數。

預先編譯模板


Mustache.parse(template);
//其他代码
Mustache.render(template,view);

模板既然有好處,也有壞處。就是編譯模板需要時間,所以在我們已知會使用某個模板的前提下,我們可以預先編譯這個模板,以便後面的使用。

以上是輕量級JavaScript模版引擎mustache.js如何使用程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript數據類型:瀏覽器和nodejs之間是否有區別?JavaScript數據類型:瀏覽器和nodejs之間是否有區別?May 14, 2025 am 12:15 AM

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScript評論:使用//和 / * * / * / * /JavaScript評論:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具