讓我明白又糊涂的handlebars(一)


因?yàn)閔andlebars模板的方便與簡潔,比起jsp等又完全不依賴后臺(tái)服務(wù)器,所以果斷入手handlebars,但是因?yàn)閺?qiáng)迫癥的發(fā)作,找了半天如何將handlebars的模板文件放置在獨(dú)立文件中,后來明白這是需要預(yù)編譯的,但是不想浪費(fèi)這三個(gè)小時(shí)的查找,還是將handlebars使用小結(jié)一下,至于預(yù)編譯部分,還是之后系統(tǒng)試過之后再次推出吧?。?!


handlebars簡介

是js的一個(gè)語義模板庫,通過view和data的分離來快速構(gòu)建Web模板。采用“Logic-less template”(無邏輯模板)的思路,Handlebars兼容Mustache,你可以在Handlebars中導(dǎo)入Mustache模板?!盁o邏輯”不是說你只能在模板中使用簡單的占位符,而是意味著這些邏輯性的功能只能由某些智能標(biāo)簽來完成(例如,數(shù)組迭代,條件式渲染等)。


handlebars 特點(diǎn)

handlebars支持的瀏覽器及運(yùn)行環(huán)境有:IE6+ Chrome Firefox Safari5+ Operall11+以及node.js
handlebars是ember.js /nodejs web框架Clouda/ Meteor的默認(rèn)模板引擎


handlebars使用

  • 安裝
    其實(shí)handlebars也相當(dāng)于一個(gè)js庫,如同jquery一樣,下載、安裝,這里我們可以從http://handlebarsjs.com中下載handlebars.js庫
  • 引入
    因?yàn)閔andlebars.js是jquery插件,所以在相應(yīng)的html中需要分別將jquery與handlebars引入,如下:
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/handlebars/handlebars-v3.0.1.js"></script>

所以,就這樣,我們可以開始我們的handlebars初體驗(yàn)啦

  • 使用基本邏輯

1.使用handlebars一般來說都是為了解決從后臺(tái)拿數(shù)據(jù),并實(shí)現(xiàn)后臺(tái)數(shù)據(jù)前端渲染的問題。在未與后臺(tái)對(duì)接時(shí),可以自己用js模擬json數(shù)據(jù)進(jìn)行渲染。

之前有用過jsp進(jìn)行渲染,每一次檢查效果什么的都需要開啟服務(wù)器,我項(xiàng)目一般用的是IDEA,一開啟,整個(gè)電腦就出現(xiàn)各種卡頓、卡。。。
所以可以用sublime直接查看渲染的handlebars渲染的效果時(shí),我內(nèi)心是極其愉悅的。
雖然如果用gulp等對(duì)其進(jìn)行預(yù)編譯會(huì)改變這種情況,心里也是愉悅的,畢竟不是后臺(tái)程序員,jsp與后臺(tái)的交互一些東西時(shí)我的內(nèi)心也是不愿的。

模擬的json對(duì)象

  var data = [
            {"cd-timeline-content":"content_right",
            "cd-detail-date":"date-right",
            "cd-title":"熱氣球",
            "content_a_href":"#",
            "content_img_src":"../../src/images/balloon/1.jpg",
            "cd-date":"2015-01-06",
            "cd-date-clock":"8:00 ",
            "cd-half-day":"am"}
        ];

2.js的json數(shù)據(jù)傳入handlebars,并渲染需要的html部分,根據(jù)需要的div內(nèi)容實(shí)現(xiàn)渲染效果==這里是我項(xiàng)目的,如果需要使用可以進(jìn)行相應(yīng)改變。
對(duì)應(yīng)的html部分

<div id="dataList"></div>

handlebars渲染部分

<script id="table-template" type="text/x-handlebars-template" >
    {{#each this}}
    <div class="cd-timeline-block">
        <div class="cd-timeline-img cd-picture">
            <img src="../../src/images/MyTracks/3.png" alt="Picture">
        </div>
        <div class="cd-timeline-content {{cd-timeline-content}} " >
            <h2>{{cd-title }}</h2>
            <a href="{{content_a_href}}"><img src="{{content_img_src}}" ></a>

        </div>
        <div class="cd-detail-date {{cd-detail-date}}">
            <p class="cd-date">{{cd-date}}</p>
            <p class="cd-date-clock">{{cd-date-clock}} &nbsp {{cd-half-day}} </p>
        </div>
    </div>
    {{/each}}
</script>

3.再使用js實(shí)現(xiàn)html的替換和渲染

var myTemplate = Handlebars.compile($("#table-template").html());
$('#dataList').html(myTemplate(data));

4.邏輯圖如下

handlebars使用過程.png

注:文章乃自己實(shí)踐總結(jié),若有論述錯(cuò)誤希望指正,下篇將介紹handlebars的一些使用函數(shù)的方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容