• dot.js


    doT.js特点是快,小,无依赖其他插件。压缩版仅有4K大小,最近使用点的时候整理出这个dot.js教程API文档,是对dot.js的介绍和实例,希望能帮助到一部分需要的人。

    doT.js详细使用介绍

    使用方法:

    1
    2
    3
    4
    6
    7
    {{= }} for interpolation
    {{ }} for evaluation
    {{~ }} for array iteration
    {{? }} for conditionals
    {{! }} for interpolation with encoding
    {{# }} for compile-time evaluation/includes and partials
    {{## #}} for compile-time defines

    调用方式:

    1
    2
    var tmpText = doT.template(模板);
    tmpText(数据源);


    例子一:

    1,用于插值赋值

    格式:

    1
    {{= }}

    数据源:

    1
    {"name":"Jake","age":31}

    区域:

    1
    <div id="interpolation"></div>

    模板:

    1
    2
    3
    4
    <script id="interpolationtmpl" type="text/x-dot-template">
        <div>Hi {{=it.name}}!</div>
        <div>{{=it.age || ''}}</div>
    </script>

    调用方式:

    1
    2
    3
    var dataInter = {"name":"Jake","age":31};
    var interText = doT.template($("#interpolationtmpl").text());
    $("#interpolation").html(interText(dataInter));

    例子二:

    2,用于评估循环

    格式:

    1
    2
    3
    {{ for var key in data { }} 
    {{= key }} 
    {{ } }}

    数据源:

    1
    {"name":"Jake","age":31,"interests":["basketball","hockey","photography"],"contact":{"email":"jake@xyz.com","phone":"999999999"}}

    区域:

    1
    <div id="evaluation"></div>

    模板:

    1
    2
    3
    4
    <script id="evaluationtmpl" type="text/x-dot-template">
        {{ for(var prop in it) { }}
            <div>KEY:{{= prop }}---VALUE:{{= it[prop] }}</div>
        {{ } }}
    </script>

    调用方式:

    1
    2
    3
    var dataEval = {"name":"Jake","age":31,"interests":["basketball","hockey","photography"],"contact":{"email":"jake@xyz.com","phone":"999999999"}};
    var evalText = doT.template($("#evaluationtmpl").text());
    $("#evaluation").html(evalText(dataEval));

    例子三:

    3,用于数组迭代的数组

    格式:

    1
    2
    3
    {{~data.array :value:index }}
        ...
    {{~}}

    数据源:

    1
    {"array":["banana","apple","orange"]}

    区域:

    1
    <div id="arrays"></div>

    模板:

    1
    2
    3
    4
    <script id="arraystmpl" type="text/x-dot-template">
        {{~it.array:value:index}}
            <div>{{= index+1 }}{{= value }}!</div>
        {{~}}
    </script>

    调用方式:

    1
    2
    3
    var dataArr = {"array":["banana","apple","orange"]};
    var arrText = doT.template($("#arraystmpl").text());
    $("#arrays").html(arrText(dataArr));

    例子四:

    4,{{?条件条件

    格式:

    1
    2
    3
    {{? }} if
    {{?? }} else if
    {{??}} else

    数据源:

    1
    {"name":"Jake","age":31}

    区域:

    1
    <div id="condition"></div>

    模板:

    1
    2
    3
    4
    6
    7
    8
    9
    <script id="conditionstmpl" type="text/x-dot-template">
        {{? !it.name }}
        <div>Oh, I love your name, {{=it.name}}!</div>
        {{?? !it.age === 0}}
        <div>Guess nobody named you yet!</div>
        {{??}}
        You are {{=it.age}} and still dont have a name?
        {{?}}
    </script>

    调用方式:

    1
    2
    3
    var dataEncode = {"uri":"http://jq22.com/?keywords=Yoga","html":"<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>"};
    var EncodeText = doT.template($("#encodetmpl").text());
    $("#encode").html(EncodeText(dataEncode));

    例子五:

    5,用于带编码的插值

    数据源:

    格式:

    1
    {{!it.uri}}

    区域:

    1
    <div id="encode"></div>

    模板:

    1
    2
    3
    <script id="encodetmpl" type="text/x-dot-template">
        Visit {{!it.uri}} {{!it.html}}
    </script>

    调用方式:

    1
    2
    3
    var dataEncode = {"uri":"http://jq22.com/?keywords=Yoga","html":"<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>"};
    var EncodeText = doT.template($("#encodetmpl").text());
    $("#encode").html(EncodeText(dataEncode));

    例子六:

    6,{{#}}用于编译时评估/包含和部分

    {{###}}用于编译时定义

    数据源:

    1
    {"name":"Jake","age":31}

    区域:

    1
    <div id="part"></div>

    模板:

    1
    2
    3
    4
    6
    7
    <script id="parttmpl" type="text/x-dot-template">
        {{##def.snippet:
        <div>{{=it.name}}</div>{{#def.joke}}
        #}}
        {{#def.snippet}}
        {{=it.html}}
    </script>

    调用方式:

    1
    2
    3
    4
    var dataPart = {"name":"Jake","age":31,"html":"<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>"};
    var defPart = {"joke":"<div>{{=it.name}} who?</div>"};
    var partText = doT.template($("#parttmpl").text(), undefined, defPart);
    $("#part").html(partText(dataPart));
  • 相关阅读:
    codeforces 349B Color the Fence 贪心,思维
    luogu_2022 有趣的数
    luogu_2320 [HNOI2006]鬼谷子的钱袋
    luogu_1879 [USACO06NOV]玉米田Corn Fields
    SAC E#1
    luogu_1984 [SDOI2008]烧水问题
    luogu_2085 最小函数值
    luogu_1631 序列合并
    luogu_1196 银河英雄传说
    luogu_1037 产生数
  • 原文地址:https://www.cnblogs.com/xiaoleidiv/p/9772974.html
Copyright © 2020-2023  润新知