成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 詳解handlebars+require基本使用方法
全站頭部文字 我要出現在這里
詳解handlebars+require基本使用方法 701 2024-02-08   

最近在某網站看到了handlebars.js,出于好奇就百度了下這是神馬玩意,結果讓我很是歡喜,于是就開始自學下,handlebars就幾個方法,蠻簡單,言歸正傳!

以下是基本教學邏輯演示,會附完整代碼

測試案例就分為3大塊,頭、主體、尾:

<div id="header"></div>
<div class="contact" id="contact"></div>
<div id="footer"></div>

先來講講id="contact"主體有些什么內容,html代碼就不貼了,直接看下圖:

查看圖片

handlebars的模版代碼如下:

<script id="contact-template" type="text/x-handlebars-template">
 <div class="tit">{{transformat info}}</div>
 {{#tit}}
 <span class="one">{{this}}</span> {{/tit}} {{#student}}
 <span class="one">{{@index}}</span><span class="one">{{name}}</span><span class="one">{{sex}}</span><span class="one">{{age}}</span><span class="one">{{sheight}}</span> {{/student}}
 </script>

圖片中的‘2016通訊錄'用到了handlebars.registerHelper,代碼如下:

Handlebars.registerHelper("transformat", function(value) {
 if(value == "通訊錄") {
 return new Handlebars.SafeString("<font color='pink'>2016通訊錄</font>")
 } else {
 return "old通訊錄";
 }
 });

注冊一個helper,value是模版傳進來的值,相當于jq的function(),new Handlebars.SafeString是為了防止把html標簽輸出為文本形式,就是jq下html()和text()的區別。

最后通過渲染將模版輸出到網頁,代碼如下:

$('#contact').html(Handlebars.compile($("#contact-template").html())(data));

如果有通用模版,就是一個模版要調用多次,上面的代碼也可以這樣寫,方便調用:

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

其中的data就是json數據,為了方便就自定義了:

var data = {
 "info": "通訊錄",
 "tit": ["序號", "姓名", "性別", "年齡", "身高"],
 "student": [{
 "name": "張三",
 "sex": "男",
 "age": 18,
 "sheight": "175"
 }, {
 "name": "李四",
 "sex": "男",
 "age": 22,
 "sheight": "180"
 }, {
 "name": "妞妞",
 "sex": "女",
 "age": 18,
 "sheight": "165"
 }, {
 "name": "袁帥",
 "sex": "男",
 "age": 17,
 "sheight": "173"
 }]
 };

最后效果圖如下,其實和剛剛那個主體一樣,就是有頭有尾而已:

查看圖片

到這里其實handlebars的基礎知識就講解完了,已經能滿足日常網站的需求,當然handlebars還有其他的一些功能,可以參考中文手冊:

http://keenwon.com/992.html

未完待續,然后文件的頭和尾怎么能拆分出來放在單獨的頁面中來引用呢?不然不可能每個頁面都寫一遍,以后要改就麻煩了(當然如果你前端用的是php、asp之類的動態語言,那么一下部分可以忽略不看,因為我用的是html+ajax來調用api接口的)然后只能百度新的東西,最終找到了require text.js,又一神器出現,天將降大任于斯人也,那么簡單再來說說,看招:

text.js是require.js下的一個插件,我代碼里都有。

我把頭和尾拆分為兩個單獨的html文件,如下:

header.html

<script id="header-template" type="text/x-handlebars-template">
 <div class="header"><span>首頁</span><span>聯系我們</span><span>關于我們</span></div>
</script>

footer.html

<script id="footer-template" type="text/x-handlebars-template">
 <div class='footer'>CopyRight© 2015-2016</div>
</script>

其實放在一個文件中也行,到時候自己體會。

兩個文件拆分了,接下來就是引用的,那么require text.js就要出馬了,先調用下。

<script type="text/javascript" src="http://www.gimoo.net/t/1810/js/require.js" data-main="js/main.js"></script>

data-main其實是定義了一個入口文件,這個就不細說了,參考官方文檔:

http://www.bootcdn.cn/require-text/readme/

這個是英文的,大家可以自行百度其他文檔。

main.js的代碼是自己寫的,寫入口,其他的不多說了,就說和引用有關的,看代碼:

define(["text!../header.html", "text!../footer.html"], function(header, footer) {
 $('#header').html(header);
 $('#header').html(Handlebars.compile($("#header-template").html()));
 $('#footer').html(footer);
 $('#footer').html(Handlebars.compile($("#footer-template").html()));
});

text!../header.html中的text!表示把header.html文件引用進來以文本的形式,反正就是類似于php的include、require,把header.html和footer.html引用到index.html中。

這樣一來,Handlebars.compile渲染模版就要放在main.js的define回調中去。

這樣就能在任何頁面引用Handlebars模版文件了,說到這,大家應該會明白我剛說的頭和尾能放一個文件中吧,調用模版也是根據模版的ID調用,如果模版不多,放一個公用html文件就好。

好了,廢話就說到這了,放上大家心心念念的完整代碼了!拜~

完整代碼下載地址:http://xiazai.gimoo.net/201612/yuanma/handlebars_require_gimoo.rar

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持綠夏網!



主站蜘蛛池模板: 小时代 电影| 黄网站在线观看视频| 那根所有权| 南营洞1985| 延禧| 无常电影| 乐队的夏天 综艺| 现代企业管理| 39天 电影| 青草国产| 手机演员表| 消防知识问答100题| 潇洒走一回广场舞完整版| 一拜天地双男主| 范冰冰激情| 好男儿之情感护理| 送教上门工作情况记录表| 裸舞在线观看| 宇辉| 野性的呼唤巴克原版| 老人头olderman中国| 五年级歇后语大全| 免费完整版在线观看| 职业兽医医生资格证报名官网| 学前教育科研方法的论文| 乔治娅·格洛梅| 家庭理论电影| www.黄视频| 二年级上古诗26首打印| 头像男头像| 天才不能承受之重| 熊出没免费电影| 侠客行演员表| 那些女人电视剧免费观看全集剧情| 楼下的房客到底讲的什么| 学练优答案| 雪中悍刀行第一季电视剧免费观看| 漂流者| 葛思然| 少年团时代成员| 刘子菲|

?。?!站長長期在線接!??!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103