成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端模板引擎doT.js的使用

defcon / 2185人閱讀

前言

我們?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、 MustachedoT.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é)果輸出:

Hello world.
200
求值(evaluate)

用法:{{ }},可在表達(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é)果輸出:

 1 zhangsan [email protected]    2 lisi [email protected] 
編譯時(shí)包含模板和編譯時(shí)定義

用法:{{# }}{{## #}}

創(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

相關(guān)文章

  • 前端模板引擎doT.js使用

    前言 我們?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]...

    劉玉平 評(píng)論0 收藏0
  • mustache:web模板引擎

    摘要:簡(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...

    klivitamJ 評(píng)論0 收藏0
  • 淺談web中前端模板引擎使用

    摘要:置換型模板引擎的優(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)生的,它可以生成...

    妤鋒シ 評(píng)論0 收藏0
  • 淺談 Web 中前后端模板引擎使用

    摘要:前端模板的出現(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é)得還是有必要記下此文,...

    chenjiang3 評(píng)論0 收藏0
  • 基于TmodJS前端模板工程化解決方案

    摘要:原作者唐斌騰訊什么原名是一個(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)后端模板一樣的同...

    zhaochunqi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<