最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

探究Javascript模板引擎mustache.js使用方法

 更新時(shí)間:2016年01月26日 10:17:41   作者:流云諸葛  
這篇文章主要為大家介紹了Javascript模板引擎mustache.js使用方法,mustache.js是一個(gè)簡(jiǎn)單強(qiáng)大的Javascript模板引擎,使用它可以簡(jiǎn)化在js代碼中的html編寫(xiě),壓縮后只有9KB,非常值得在項(xiàng)目中使用,感興趣的小伙伴們可以參考一下

我們將為大家詳解Mustache.js輕量級(jí)JavaScript模版引擎使用方法。

簡(jiǎn)單示例

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

可以很明顯的看出Mustache模板的語(yǔ)法,只需要使用{{和}}包含起來(lái)就可以了,里面放上對(duì)象的名稱。

通過(guò)本示例也可以看出,如果指定的屬性為函數(shù)的時(shí)候,不會(huì)輸出函數(shù)里面的內(nèi)容,而是先執(zhí)行函數(shù),然后將返回的結(jié)果顯示出來(lái)。

不轉(zhuǎn)義HTML標(biāo)簽

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

通過(guò)這個(gè)示例可以看出Mustache默認(rèn)是會(huì)將值里面的html標(biāo)記進(jìn)行轉(zhuǎn)義的,但是有時(shí)候我們并不需要。

所以這里我們可以使用{{{和}}}包含起來(lái),或者是{{和}}包含,那么Mustache就不會(huì)轉(zhuǎn)義里面的html標(biāo)記。

綁定子屬性的值

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

相信看到第一個(gè)示例的時(shí)候,就會(huì)有人想到能不能綁定子屬性,如果你努力看下去了。那么祝賀你,現(xiàn)在就是解決你的需求的方式,僅僅只需要通過(guò).來(lái)使用子屬性即可。

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

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

問(wèn)題總是不斷,如果我們還需要能夠根據(jù)我們給的值,決定是否渲染某個(gè)部分,那么現(xiàn)在就可以解決這個(gè)問(wèn)題,當(dāng)然還要提示的就是不僅僅是false會(huì)導(dǎo)致不渲染指定部分。

null,空數(shù)組,0,空字符串一樣有效。語(yǔ)法上面比較簡(jiǎn)單,就是使用{{#key}} ... {{/key}}來(lái)控制中間的內(nèi)容。

循環(huán)輸出

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

僅僅學(xué)會(huì)上面的方式,大部分地方你都解決了,但是還是會(huì)出現(xiàn)麻煩的地方,就是循環(huán)輸出,如果你一個(gè)一個(gè)寫(xiě),相信會(huì)很煩躁,當(dāng)然Mustache不會(huì)讓我們失望,它也給出了如何循環(huán)輸出的方式,這里是將一個(gè)由對(duì)象組成的數(shù)組輸出,如果我們輸出的是數(shù)組,就需要使用{{.}}來(lái)替代{{name}}。

循環(huán)輸出指定函數(shù)處理后返回的值

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));

循環(huán)輸出是有了,但是我們還想后期進(jìn)行加工。那么這個(gè)完全符合你的需要,因?yàn)镸ustache會(huì)將數(shù)組中的值傳遞給你的函數(shù),輸出你函數(shù)返回的值。這里我們可以看到最外層是數(shù)組,只要在里面使用函數(shù)那么外層的數(shù)組就會(huì)作為這個(gè)函數(shù)的參數(shù)傳遞進(jìn)去。

自定義函數(shù)

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

上面我們都是用的變量作為節(jié),那么我們現(xiàn)在用函數(shù)作為節(jié),會(huì)有什么效果呢。

它會(huì)調(diào)用我們函數(shù)返回的函數(shù),將節(jié)中間的原始字符串作為第一個(gè)參數(shù),默認(rèn)的解釋器作為第二個(gè)參數(shù),那么我們就可以自行加工。

反義節(jié)

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

上面我們也用節(jié),但是僅僅只能選擇是否輸出某個(gè)部分。所以這里我們彌補(bǔ)一下。

如果我們使用了{(lán){^和}}來(lái)定義節(jié)的話,那么這個(gè)部分只會(huì)在里面的值為空,null,空數(shù)組,空字符串的時(shí)候才會(huì)顯示。那么我們就可以實(shí)現(xiàn)了if else的效果了。

部分模板

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

Mustache雖然節(jié)約了很多時(shí)間,但是我們定義了很多模板,但是彼此之間無(wú)法互相嵌套使用,也會(huì)造成繁瑣。

所以這里我們還要介紹如何定義部分模板,用來(lái)在其他模板里面使用,這里使用其他模板的方式僅僅是{{>templetename}}。

最大的不同就是Mustache.render方法有了第三個(gè)參數(shù)。

預(yù)編譯模板

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

模板既然有好處,也有壞處。就是編譯模板需要時(shí)間,所以在我們已知會(huì)使用某個(gè)模板的前提下,我們可以預(yù)先編譯好這個(gè)模板,以便后面的使用。

希望本文所述對(duì)大家學(xué)習(xí)有所幫助。

相關(guān)文章

  • layui清空,重置表單數(shù)據(jù)的實(shí)例

    layui清空,重置表單數(shù)據(jù)的實(shí)例

    今天小編就為大家分享一篇layui清空,重置表單數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • 微信小程序傳值以及獲取值方法的詳解

    微信小程序傳值以及獲取值方法的詳解

    這篇文章主要介紹了微信小程序傳值以及獲取值方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 理解javascript中的with關(guān)鍵字

    理解javascript中的with關(guān)鍵字

    這篇文章主要幫助大家理解javascript中的with關(guān)鍵字,學(xué)習(xí)with關(guān)鍵字的作用,感興趣的小伙伴們可以參考一下
    2016-02-02
  • JavaScript設(shè)計(jì)模式之門(mén)面模式原理與實(shí)現(xiàn)方法分析

    JavaScript設(shè)計(jì)模式之門(mén)面模式原理與實(shí)現(xiàn)方法分析

    這篇文章主要介紹了JavaScript設(shè)計(jì)模式之門(mén)面模式原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了門(mén)面模式的原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • JavaScript  event對(duì)象整理及詳細(xì)介紹

    JavaScript event對(duì)象整理及詳細(xì)介紹

    這篇文章主要介紹了JavaScript event對(duì)象整理及詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 原生javascript+CSS實(shí)現(xiàn)輪播圖效果

    原生javascript+CSS實(shí)現(xiàn)輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了原生javascript+CSS實(shí)現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • ES6 exports與import導(dǎo)出模塊使用基礎(chǔ)示例

    ES6 exports與import導(dǎo)出模塊使用基礎(chǔ)示例

    這篇文章主要為大家介紹了ES6 exports與import導(dǎo)出模塊使用基礎(chǔ)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 微信小程序生成海報(bào)分享朋友圈的實(shí)現(xiàn)方法

    微信小程序生成海報(bào)分享朋友圈的實(shí)現(xiàn)方法

    利用微信強(qiáng)大的社交能力通過(guò)小程序達(dá)到裂變的目的,拉取新用戶。下面小編給大家?guī)?lái)了微信小程序生成海報(bào)分享朋友圈的實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧
    2019-05-05
  • javascript加載導(dǎo)出3mf文件

    javascript加載導(dǎo)出3mf文件

    3MF是一種開(kāi)放標(biāo)準(zhǔn)的文件格式,專門(mén)用于三維制造和打印,這篇文章主要介紹了如何使用JavaScript實(shí)現(xiàn)加載導(dǎo)出3mf文件,感興趣的可以了解下
    2024-11-11
  • Postman環(huán)境變量全局變量使用方法詳解

    Postman環(huán)境變量全局變量使用方法詳解

    這篇文章主要介紹了Postman環(huán)境變量全局變量使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論

仁寿县| 印江| 定陶县| 嘉禾县| 周至县| 兴国县| 博湖县| 阿拉尔市| 布拖县| 河池市| 上饶县| 新安县| 临海市| 柘荣县| 清河县| 青海省| 青川县| 三门县| 霍城县| 会同县| 大兴区| 新兴县| 鹿泉市| 平和县| 富宁县| 呼伦贝尔市| 灵寿县| 建瓯市| 石门县| 蒲城县| 平原县| 夏邑县| 革吉县| 敦煌市| 临夏县| 赞皇县| 乾安县| 宜兴市| 封丘县| 浏阳市| 云和县|