Mustache

Mustache 是一款經(jīng)典的前端模板引擎赠尾,在前后端分離的技術(shù)架構(gòu)下面,前端模板引擎是一種可以被考慮的技術(shù)選型,隨著重型框架(AngularJS赔癌、ReactJS、Vue)的流行澜沟,前端的模板技術(shù)已經(jīng)成為了某種形式上的標(biāo)配灾票,Mustache 的價(jià)值在于其穩(wěn)定和經(jīng)典:

主頁:https://github.com/janl/mustache.js/

文檔:https://mustache.github.io/mustache.5.html

Mustache 在使用的時(shí)候,會在頁面上出現(xiàn) {{person}} 這樣的標(biāo)簽茫虽,載入的時(shí)候回顯示出來刊苍,然后立即被替換掉,這個(gè)對于頁面的呈現(xiàn)是不夠友好的,這是我在使用的過程中遇到的一個(gè)痛點(diǎn)。

Mustache 功能非常經(jīng)典速缨,這里就能全部羅列出來:

變量

{{person}}

帶有HTML的變量

{{{person}}}

循環(huán)

{{#persons}}

......

{{/persons}}

數(shù)組循環(huán)的時(shí)候可以用.作為下標(biāo)

{

"musketeers": ["Athos", "Aramis", "Porthos", "D'Artagnan"]

}

{{#musketeers}}

{{.}}

{{/musketeers}}

對象

正常使用:

{

"name": {

"first": "Michael",

"last": "Jackson"

},

"age": "RIP"

}

{{name.first}} {{name.last}}

{{age}}

循環(huán)使用:

{

"stooges": [

{ "name": "Moe" },

{ "name": "Larry" },

{ "name": "Curly" }

]

}

{{#stooges}}

{{name}}

{{/stooges}}

if else

{{#person}}

......

{{/person}}

{{^person}}

......

{{/person}}

布爾判斷

和前面循環(huán)的語法是一樣的螟蝙,取決于變量是否是一個(gè)數(shù)組

{{#person}}

......

{{/person}}

數(shù)組的布爾判斷

當(dāng)一個(gè)數(shù)組沒有任何值的時(shí)候,可能會希望不做任何的顯示感猛,所以需要這個(gè)判斷

{{#persons.length}}

......

{{/persons.length}}

Lambdas

遇到和前面的循環(huán)和布爾表達(dá)式一樣,取決于參數(shù)的類型

{{#person}}

{{name}} is awesome.

{{/person}}

{

"name": "Willy",

"person": function() {

return function(text, render) {

return "" + render(text) + ""

}

}

}

輸出

Willy is awesome.

注釋

這玩意兒有啥用呢?

{{! ignore me }}

Trick

在做的循環(huán)輸出的時(shí)候主经,需要使用類似這樣的形式(感覺這就是BUG啊,或者是HTML標(biāo)準(zhǔn)的問題绰上?):


{{name}}

{{age}}


兩個(gè)核心方法

Mustache.parse(template);

Mustache.render(template, obj);

因?yàn)閯討B(tài)載入到 HTML 上的事件或者元素會丟失旨怠,所以我封裝了一個(gè)對模板的緩存:

$(templateKey).each(function(i){

templateExist = false;

$(templateArray).each(function(index){

if (templateArray[index][0] == templateKey+i)

{

templateExist = true;

template = templateArray[index][1];

}

})

if (templateExist != true)

{

template = $(this).html();

templateArray.push([templateKey+i, template]);

}

Mustache.parse(template);

$(this).html(Mustache.render(template, item.data)).show();

if (callbackFunction)

{

callbackFunction(item.data);

};

})

順便簡單學(xué)習(xí)了一下 Handlebars,這款也非常的知名蜈块,并且是基于 Mustache 的模板引擎:

Handlebars:http://handlebarsjs.com/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鉴腻,一起剝皮案震驚了整個(gè)濱河市迷扇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爽哎,老刑警劉巖蜓席,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異课锌,居然都是意外死亡厨内,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門渺贤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雏胃,“玉大人,你說我怎么就攤上這事志鞍〔t亮!?“怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵固棚,是天一觀的道長统翩。 經(jīng)常有香客問我,道長此洲,這世上最難降的妖魔是什么厂汗? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮呜师,結(jié)果婚禮上娶桦,老公的妹妹穿的比我還像新娘。我一直安慰自己匣掸,他們只是感情好趟紊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碰酝,像睡著了一般霎匈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上送爸,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天铛嘱,我揣著相機(jī)與錄音,去河邊找鬼袭厂。 笑死墨吓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纹磺。 我是一名探鬼主播帖烘,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼橄杨!你這毒婦竟也來了秘症?” 一聲冷哼從身側(cè)響起照卦,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乡摹,沒想到半個(gè)月后役耕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聪廉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年瞬痘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片板熊。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡框全,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邻邮,到底是詐尸還是另有隱情竣况,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布筒严,位于F島的核電站,受9級特大地震影響情萤,放射性物質(zhì)發(fā)生泄漏鸭蛙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一筋岛、第九天 我趴在偏房一處隱蔽的房頂上張望娶视。 院中可真熱鬧,春花似錦睁宰、人聲如沸肪获。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孝赫。三九已至,卻和暖如春红符,著一層夾襖步出監(jiān)牢的瞬間青柄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工预侯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留致开,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓萎馅,卻偏偏與公主長得像双戳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子糜芳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容