前言
我們?cè)谧銮岸碎_(kāi)發(fā)時(shí),經(jīng)常需要根據(jù)后臺(tái)返回的json數(shù)據(jù)動(dòng)態(tài)生成html并插入到頁(yè)面中顯示。最簡(jiǎn)單的方法就是通過(guò)jQuery去遍歷數(shù)據(jù)拼接html,如以下:
但是,這種通過(guò)拼接html的方式使用在比較簡(jiǎn)單的結(jié)構(gòu)還好;如果結(jié)構(gòu)比較復(fù)雜,拼接的時(shí)候還得注意引號(hào)之間的嵌套,而且代碼維護(hù)起來(lái)也比較困難,代碼可讀性也差。因此使用模板引擎可以幫我們很好的避免這個(gè)問(wèn)題。
常用的模板引擎有artTemplate、Jade、 Mustache、doT.js、juicer等,此編文章僅介紹doT.js的使用。
簡(jiǎn)介官方Github:https://github.com/olado/doT
doT.js快速,體積小并不依賴其他插件。
使用方法 配置doT.templateSettings默認(rèn)配置:
doT.templateSettings = { evaluate: /{{([sS]+?)}}/g, interpolate: /{{=([sS]+?)}}/g, encode: /{{!([sS]+?)}}/g, use: /{{#([sS]+?)}}/g, define: /{{##s*([w.$]+)s*(:|=)([sS]+?)#}}/g, conditional: /{{?(?)?s*([sS]*?)s*}}/g, iterate: /{{~s*(?:}}|([sS]+?)s*:s*([w$]+)s*(?::s*([w$]+))?s*}})/g, varname: "it", strip: true, append: true, selfcontained: false };
如果你想使用自己的分隔符,可以根據(jù)自己需求修改doT.templateSettings中的正則。
以下是默認(rèn)的分隔符列表:
{{ }}:用于求值(evaluate)
{{= }}:用于插值(interpolate)
{{! }}: 用于插值編碼(encode)
{{# }}:用于編譯時(shí)求值/包含局部模板(use)
{{## #}}:用于編譯時(shí)定義(define)
{{? }}:用于條件語(yǔ)句(conditional)
{{~ }}:用于數(shù)組迭代(iterate)
其他說(shuō)明
varname : 模板數(shù)據(jù)引用變量名
strip : 控制空白字符, true:全部去掉空格; false:保留空格
append : 性能優(yōu)化設(shè)置。通過(guò)它調(diào)整性能,根據(jù)使用的 javascript 引擎和模板的大小,append 設(shè)置成 false,可能會(huì)產(chǎn)生更好的效果
模板編譯函數(shù)function(tmpl, c, def)
tmpl : 模板文本
c : 自定義編譯設(shè)置,如果為 null,用到 doT.templateSettings
def : 編譯時(shí)求值的數(shù)據(jù)
默認(rèn)情況下,調(diào)用此函數(shù)編譯產(chǎn)生的方法有一個(gè)參數(shù)data,命名為it,即默認(rèn)配置的varname。
插值(evaluation)用法:{{= }}
創(chuàng)建模板,默認(rèn)情況下,模板中的數(shù)據(jù)用it作為引用,可修改配置中的varname來(lái)改變變量名;
使用:
var message = { msg: "Hello world.", code: 200 }; //使用doT.template(tplText)函數(shù),tplText為模板文本 var tpl = doT.template($("#testTpl").text()); //某些瀏覽器可能會(huì)取不到模板內(nèi)容,可用$("#testTpl").html() //傳入數(shù)據(jù)獲取html var html = tpl(message); console.log(html);
結(jié)果輸出:
求值(evaluate)Hello world.200
用法:{{ }},可在表達(dá)式中使用js腳本
創(chuàng)建模板:
使用:
var result = { status: true, error: "" }; var tpl = doT.template($("#testTpl2").text()); var html = tpl(result); console.log(html);
結(jié)果輸出:
條件語(yǔ)句(conditional)操作成功
用法:{{? }}
在上個(gè) 求值(evaluate) 例子中的模板恰好是條件判斷,我們可以用{{? }}改寫模板以達(dá)到一樣的效果:
使用方法參考求值(evaluate)例子,最后輸出html是一樣的。
數(shù)組迭代(iterate)用法:{{~ }}
創(chuàng)建模板:
使用:
var data = { status: true, msg: "success", list: [{ id: 1, name: "zhangsan", email: "[email protected]" }, { id: 2, name: "lisi", email: "[email protected]" }] }; var tpl = doT.template($("#testTpl3").html()); var html = tpl(data); console.log(html);
結(jié)果輸出:
編譯時(shí)包含模板和編譯時(shí)定義1 zhangsan [email protected] 2 lisi [email protected]
用法:{{# }}和{{## #}}
創(chuàng)建模板:
使用:
var work = { title: "完善項(xiàng)目一需求提取", content: "請(qǐng)研發(fā)部爭(zhēng)取在月底前提取項(xiàng)目一需求", dealine: "2017-11-25 23:00" }; var def = { header: $("#testHeaderTpl").text(), body: $("#testPageTpl5").text() }; var tpl = doT.template($("#testBodyTpl").html(), null, def); var html = tpl(work); console.log(html);
結(jié)果輸出:
工作內(nèi)容:
以下使用"testHeaderTpl"模板內(nèi)容:
標(biāo)題:完善項(xiàng)目一需求提取
請(qǐng)研發(fā)部爭(zhēng)取在月底前提取項(xiàng)目一需求截止時(shí)間:2017-11-25 23:00以下是編譯時(shí)定義
更多用法可參考官方說(shuō)明:http://olado.github.io/doT/
參考
http://olado.github.io/doT/
原文地址:https://www.lwhweb.com/2017/11/25/dot-js/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/51599.html
前言 我們?cè)谧銮岸碎_(kāi)發(fā)時(shí),經(jīng)常需要根據(jù)后臺(tái)返回的json數(shù)據(jù)動(dòng)態(tài)生成html并插入到頁(yè)面中顯示。最簡(jiǎn)單的方法就是通過(guò)jQuery去遍歷數(shù)據(jù)拼接html,如以下: var data = { list: [{ id: 1, name: zhangsan, email: [email protected]...
摘要:簡(jiǎn)介是一個(gè)輕邏輯模板解析引擎,它的優(yōu)勢(shì)在于可以應(yīng)用在等多種編程語(yǔ)言中。這里主要是看中的應(yīng)用。 mustache簡(jiǎn)介 Mustache 是一個(gè) logic-less (輕邏輯)模板解析引擎,它的優(yōu)勢(shì)在于可以應(yīng)用在 Javascript、PHP、Python、Perl 等多種編程語(yǔ)言中。這里主要是看JavaScript中的應(yīng)用。Javascript 語(yǔ)言的模板引擎,目前流行有 Mustac...
摘要:置換型模板引擎的優(yōu)點(diǎn)實(shí)現(xiàn)簡(jiǎn)單,缺點(diǎn)效率低,無(wú)法滿足高負(fù)載的應(yīng)用請(qǐng)求。用途百度詞條模板引擎可以讓網(wǎng)站程序?qū)崿F(xiàn)界面與數(shù)據(jù)分離,業(yè)務(wù)代碼與邏輯代碼的分離,提升開(kāi)發(fā)效率,良好的設(shè)計(jì)也提高了代碼的復(fù)用性。前端模板的出現(xiàn)使得前后端分離成為可能。 模板引擎 模板引擎-百度詞條 什么是模板引擎?(百度詞條) 模板引擎(這里特指用于Web開(kāi)發(fā)的模板引擎)是為了使用戶界面與業(yè)務(wù)數(shù)據(jù)分離而產(chǎn)生的,它可以生成...
摘要:前端模板的出現(xiàn)使得前后端分離成為可能??偨Y(jié)本文簡(jiǎn)單介紹了模板引擎在前后端的使用,下文我們回到,重點(diǎn)分析下的使用方式以及源碼原理。樓主對(duì)于模板引擎的認(rèn)識(shí)比較淺顯,有不正之處希望指出感謝 前言 這篇文章本來(lái)不打算寫的,實(shí)話說(shuō)樓主對(duì)前端模板的認(rèn)識(shí)還處在非常初級(jí)的階段,但是為了整個(gè) 源碼解讀系列 的完整性,在深入 Underscore _.template 方法源碼后,覺(jué)得還是有必要記下此文,...
摘要:原作者唐斌騰訊什么原名是一個(gè)簡(jiǎn)單易用的前端模板預(yù)編譯工具。本文作者為來(lái)自騰訊團(tuán)隊(duì)的唐斌,他在本文中為我們分析了傳統(tǒng)前端模板內(nèi)嵌的弊端,如開(kāi)發(fā)調(diào)試效率低下自動(dòng)化構(gòu)建復(fù)雜度比較高等特點(diǎn),并針對(duì)目前現(xiàn)狀給出了較好的解決方案。 原作者: 唐斌(騰訊)| TmodJS什么 TmodJS(原名atc)是一個(gè)簡(jiǎn)單易用的前端模板預(yù)編譯工具。它通過(guò)預(yù)編譯技術(shù)讓前端模板突破瀏覽器限制,實(shí)現(xiàn)后端模板一樣的同...
閱讀 1529·2021-11-19 11:38
閱讀 3592·2021-11-15 11:37
閱讀 840·2021-09-30 09:48
閱讀 993·2021-09-29 09:46
閱讀 927·2021-09-23 11:22
閱讀 1904·2019-08-30 15:44
閱讀 3432·2019-08-26 13:58
閱讀 2410·2019-08-26 13:26