摘要:一個(gè)返回值渲染后的例那年那夏我是,年齡結(jié)果我是那年那夏,年齡的思想的核心是標(biāo)簽和。從上面的代碼中可以看到定義模板時(shí),使用了這樣的標(biāo)記,這就是的標(biāo)簽,只不過(guò)它用替代了,以免跟標(biāo)簽的混淆。
Mustache學(xué)習(xí)筆記
Mustache 是一款基于javascript 實(shí)現(xiàn)的模板引擎,類(lèi)似于 Microsoft’s jQuery template plugin,但更簡(jiǎn)單易用,在前后端分離的技術(shù)架構(gòu)下面,前端模板引擎是一種可以被考慮的技術(shù)選型,隨著重型框架(AngularJS、ReactJS、Vue)的流行,前端的模板技術(shù)已經(jīng)成為了某種形式上的標(biāo)配,Mustache 的價(jià)值在于其穩(wěn)定和經(jīng)典:
主頁(yè):https://github.com/janl/musta...
文檔:https://mustache.github.io/mu...
1.出現(xiàn)的問(wèn)題
在使用中會(huì)有可能在頁(yè)面渲染時(shí)會(huì)出現(xiàn){{xxx}}這種標(biāo)簽,雖然會(huì)被頁(yè)面立即替換掉,但是對(duì)于用戶呈現(xiàn)來(lái)講,依然不太友好
2.具體使用方式
從git hub上獲取相關(guān)的mustache.js文件,在頁(yè)面的head標(biāo)簽內(nèi)引用Jquery.js 和Mustache.js兩個(gè)腳本文件
簡(jiǎn)介
3.渲染
渲染形式單一:var view = Mustache.render(template,obj);
參數(shù):一個(gè)是模板html,一個(gè)是數(shù)據(jù)源對(duì)象。
view:一個(gè)返回值(渲染后的html )
例:
var obj={name:"那年那夏",age:"23"}
var template="我是{{name}},年齡{{age}}"
var view = Mustache.render(template,obj);
$("body").html(view);
結(jié)果:我是那年那夏,年齡23
4.mustache的思想
mustache的核心是標(biāo)簽和logic-less。從上面的代碼中可以看到定義模板時(shí),使用了{(lán){name}}這樣的標(biāo)記,這就是mustache的標(biāo)簽,只不過(guò)它用{{}}替代了<>,以免跟html標(biāo)簽的<>混淆。logic-less,可以翻譯為輕邏輯,因?yàn)樵诙x模板的時(shí)候不會(huì)用到if-else,不會(huì)有循環(huán)式的編碼,一切都用標(biāo)簽來(lái)解決,它的標(biāo)簽非常簡(jiǎn)單,但是能應(yīng)付所有場(chǎng)景,只要用以下幾個(gè)標(biāo)簽幾乎就能解決所有的問(wèn)題:
{{prop}}
{{{prop}}}
{{#prop}}{{/prop}}
{{^prop}}{{/prop}}
{{!prop}}
{{> prop}}
5.mustache標(biāo)簽介紹
1){{person}}變量
如上面例子中可以直接使用
嵌套使用
var obj={ "name": { "first": "xx,", "last": "yy," }, "age": "23" }
var view={{name.first}} {{name.last}} {{age}}
輸出:xx,yy,23
2){{{prop}}} 帶有HTML的變量
在{{prop}}中的html會(huì)直接轉(zhuǎn)義,如果不想轉(zhuǎn)義則使用{{{name}}}或{{&name}}
如:var obj={name:"那年那夏",age:"23"}
var template="我是{{{name}}},年齡{{age}}"
var view = Mustache.render(template,obj);
$("body").html(view);
結(jié)果:我是那年那夏,年齡23
3){{#prop}}{{/prop}} 循環(huán)
1.遍歷數(shù)組
數(shù)組循環(huán)的時(shí)候可以用.作為下標(biāo)
var obj={ "arr": ["1", "2", "3", "4"] };
var template="{{#arr}} {{.}} {{/arr}}"
輸出:1234
2.遍歷對(duì)象
var obj={ "str": [ { "name": "xx," }, { "name": "yy," }, { "name": "zz" } ] };
var template="{{#str}} {{name}} {{/str}}"
輸出xx,yy,zz
3,False和空的list
在以上代碼塊中,如果str這個(gè)key存在,并且有一個(gè)值是false或者一個(gè)空的列表,包含在塊之間的元素不會(huì)做任何顯示的.同樣如果str是一個(gè)列表,如果它為空,標(biāo)簽內(nèi)部的內(nèi)容也是不會(huì)被顯示出來(lái)的.
如:var obj={ “str”: false } ;
var view="xxx{{#str}yyy{{/str}}}"
輸出xxx
4){{^prop}} {{/prop}}當(dāng) prop值為 null, undefined, false 時(shí)才渲染輸出該區(qū)塊內(nèi)容。
如:var obj={ “str”: false } ;
var view="xxx{{^str}yyy{{/str}}}"
輸出xxxyyy
5)判斷使用{{#prop}}{{/prop}}{{^prop}} {{/prop}}
if else
{{#prop}} ... {{/prop}}
{{^prop}} ... {{/prop}}
布爾判斷
當(dāng)對(duì)象沒(méi)有值時(shí)你可能不希望展示{{#prop}} ... {{/prop}}
數(shù)組的布爾判斷
當(dāng)一個(gè)數(shù)組沒(méi)有任何值的時(shí)候,可能會(huì)希望不做任何的顯示,所以需要這個(gè)判斷{{#prop}} ... {{/prop}}
Lambdas
當(dāng)Key的值是一個(gè)可以被調(diào)用的對(duì)象,譬如是一個(gè)函數(shù)或者一個(gè)lambda,該對(duì)象將會(huì)被調(diào)用并且傳遞標(biāo)簽包含的文本進(jìn)去
var obj={ "name": "Willy",
"prop": function(){
return function(text){ return "" + text + "" } }
}
var view={{#prop}} {{name}} is xxx. {{/prop}}
輸出
我們看到prop是一個(gè)可以被調(diào)用的函數(shù)他當(dāng)標(biāo)簽使用的時(shí)候會(huì)被再次調(diào)用,并且包在其中的其他標(biāo)簽也會(huì)被轉(zhuǎn)義執(zhí)行,這個(gè)特性,可以用來(lái)做很多很多的事情.
6.{> prop}}Partials的使用
Partials 標(biāo)簽開(kāi)始是以一個(gè)大于號(hào)開(kāi)始,像這樣{{> box}}.
Partials在運(yùn)行期被渲染 (相對(duì)于編譯期渲染而言),因此可以使用它來(lái)做一些遞歸,可以避免無(wú)限的循環(huán).
例:
var tpl = "
var partials = {msg: "{{#msg}}
var html = Mustache.render(tpl, data, partials);
//輸出:
7){{!prop}} 注釋?zhuān)](méi)啥用
輸出
8)核心方法
Mustache.parse(template);//預(yù)解析(可選步驟)
Mustache.render(template, obj);
模板既然有好處,也有壞處。就是編譯模板需要時(shí)間,所以在我們已知會(huì)使用某個(gè)模板的前提下,我們可以預(yù)先編譯好這個(gè)模板,以便后面的使用。
參考說(shuō)明:https://www.cnblogs.com/yaozh...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/109959.html
摘要:模版語(yǔ)法中的模版是基于的模版語(yǔ)法,所有的模版都是合法的,所以能被遵循規(guī)范的瀏覽器和解析器解析。表達(dá)式模版中不僅僅可以進(jìn)行簡(jiǎn)單的數(shù)據(jù)綁定操作,我們還可以在模版中進(jìn)行簡(jiǎn)單的表達(dá)式。我們也簡(jiǎn)單的敘述了模版編譯的整個(gè)流程。 我們?cè)谏弦黄f(shuō)到如何把 Vue 實(shí)例中的數(shù)據(jù)顯示到視圖中,就會(huì)需要用到我們的模版,我們只是簡(jiǎn)單的使用了一些,模版其實(shí)還有很多其他的特性。今天我們就來(lái)看看模版的其他特性。 模...
摘要:指令指令帶有前綴,以表示它們是提供的特殊特性。添加事件偵聽(tīng)器時(shí)使用模式。只當(dāng)事件是從偵聽(tīng)器綁定的元素本身觸發(fā)時(shí)才觸發(fā)回調(diào)。差別在哪里將特性名轉(zhuǎn)換為從開(kāi)始支持語(yǔ)法糖,會(huì)擴(kuò)展成一個(gè)更新父組件綁定值的偵聽(tīng)器。 vue指令 指令帶有前綴 v-,以表示它們是 Vue 提供的特殊特性。 v-text {{msg}} v-html //渲染HTML文本,更新元素的 innerHTML 。注意:內(nèi)...
摘要:現(xiàn)在來(lái)做一個(gè)的入口讓我們?cè)谖募镞M(jìn)行的配置。如果想要顯示它們,我們可以在運(yùn)行的時(shí)候使用你還可以使用,在改變代碼的時(shí)候自動(dòng)進(jìn)行打包。新建文件,里面是一段,告訴使用進(jìn)行預(yù)處理。 本文譯自:Webpack your bags這篇文章由入門(mén)到深入的介紹了webpack的功能和使用技巧,真心值得一看。 由于我英語(yǔ)水平有限,而且很少翻譯文章,所以文中的一些語(yǔ)句在翻譯時(shí)做了類(lèi)似語(yǔ)義的轉(zhuǎn)換,望諒解。...
摘要:一介紹也稱為,讀音類(lèi)似,錯(cuò)誤讀音,由華人尤雨溪開(kāi)源并維護(hù)。隱藏四事件之前說(shuō)了一些關(guān)于事件的指令,這里詳細(xì)學(xué)習(xí)一下事件的相關(guān)知識(shí)。還有一些其他鍵盤(pán)事件,具體參考官方文檔。模板就是,用來(lái)進(jìn)行數(shù)據(jù)綁定,顯示在頁(yè)面中,也稱為語(yǔ)法。 一、Vue.js介紹 Vue.js也稱為Vue,讀音類(lèi)似view,錯(cuò)誤讀音v-u-e,由華人尤雨溪開(kāi)源并維護(hù)。 Vue有以下特點(diǎn): 是一個(gè)構(gòu)建用戶界面的框架 是一...
閱讀 3100·2021-11-22 13:54
閱讀 848·2021-11-04 16:08
閱讀 4577·2021-10-11 11:09
閱讀 3614·2021-09-22 16:05
閱讀 958·2019-08-30 15:54
閱讀 405·2019-08-30 15:44
閱讀 611·2019-08-30 14:05
閱讀 1030·2019-08-30 12:46