zoukankan      html  css  js  c++  java
  • template 的使用

    插件介绍:template 是一个高性能的JavaScript模板引擎。

    插件特性:

      1、性能卓越,执行速度快(mustache 与 tmpl 的20多倍);

      2、支持运行时调试,可精准定位异常模板所在语句;

      3、对 NodeJS Express 有很好的支持;

      4、安全,默认对输出进行转义;

      5、可在浏览器端实现按路径加载模板;

      6、支持预编译,可将模板转换成为非常精简的 js 文件;

      7、模板语句简介,无需前缀引用数据,拥有简洁版本和原生版本可供选择;

      8、支持所有流行的浏览器;

    开始使用(有两种语法, 此文章介绍的是简介语法)

      1) artTemplate 模板必须使用一个type="text/html" 的 script 标签用来存放模板(标签中写的是HTML);

     <script type="text/html"></script>

      2) 开始编写自己的模板

     <script id="model" type="text/html">
         <h1>{{title}}</h1>
         <ul>
             {{each list as value index}}
                 <li>{{index+1}}、{{value}}</li>
             {{/each}}
         </ul>
     </script>

      3) 使用数据渲染模板

     var data ={
         title: '热爱的游戏',
         list: ['LOL','王者农药','梦三国','魔兽争霸','其它']
     };

    var html = template('model',data);
     document.getElementById('box').innerHTML = html

    到了这一步,打开页面就可以看到效果了。

    artTemplate 简洁语法介绍:

    1) 使用之前需要引用简洁语法的版本,例如:

     <script src="template.js"></script>

    2) 表达式:

      {{ 和 }} 符号包裹起来的语句则为模板的表达式。

    3) 输出表达式:

      对内容编码输出: {{ title }}

      对内容不编码输出: {{ #title }}

      区别:

     // 假如有这样一段数据,title 内出现了标签 
    var
    data ={ title: '<i>热爱的</i>游戏', list: ['LOL','王者农药','梦三国','魔兽争霸','其它'] };

    {{ title }} // 显示内容为:<i>热爱的</i>游戏

    {{ #title }} // 显示内容为:热爱的游戏

    4) 条件表达式

    <script id="model" type="text/html">
        <h1>{{ title }}</h1>
        <ul>
         // 判断条件自定 {{if list.length>0}} {{each list as value index}} <li>{{index+1}}、{{value}}</li> {{/each}} {{else}} <p>没有内容</p> {{/if}} </ul> </script>

    5) 遍历表达式

    {{each list as value index}}
        <li>{{index+1}}、{{value}}</li>
    {{/each}}

    // 也可以被简写为
    {{each list}}
        <li>{{$index+1}}、{{$value}}</li>
    {{/each}}

    artTemplate 方法:

      template 函数中有两个参数值。

      第一个参数表示需要编译的模板(填写的是模板的 ID)

      第二个参数是需要向模板填充的数据,返回值是编译之后的HTML字符串;

      // 目前了解到此处

    artTemplate 默认配置

    示例:

    <script id="people" type="text/html">
        <h1>{{title}}</h1>
        <ul>
            {{if peos.length>0}}
                {{each peos as p index}}
                    <li>
                        {{index+1}}、
                        选手姓名:<span>{{p.name}</span>&#x3000;
                        年龄:<span>{{p.age}}</span>
                    </li>
                {{/each}}
            {{else}}
                <p>没有内容</p>
            {{/if}}
        </ul>
    </script>
    
    <script>
        var data2 ={
            title: '喜欢的职业选手',
            peos: [
                {
                    name: "<b>Uzi</b>",
                    age: 20
                },
                {
                    name: 'Clearlove7',
                    age: 20
                },
                {
                    name: 'Korol',
                    age: 21
                }
            ]
        }
        // 默认为true 不编译 输出为 <b>Uzi</b>
      // false 编译 是否编码输出 HTML 字符
    template.config("escape",false); var html2 = template('people',data2); document.getElementById('box2').innerHTML = html2; </script>

     

  • 相关阅读:
    CodeForces 576E Paingting Edges
    CodeForces 1361D Johnny and James
    agc027_d Modulo Matrix
    agc046_f Forbidden Tournament
    MySQL架构及优化原理
    Ubuntu下无法安装pip
    WSL安装问题----wslregisterdistribution failed with error: 0x8007007b
    基础排序算法总结(一)
    透明代理、匿名代理、混淆代理、高匿代理
    常见“加密”算法之 base64
  • 原文地址:https://www.cnblogs.com/wyhlightstar/p/7117856.html
Copyright © 2011-2022 走看看