zoukankan      html  css  js  c++  java
  • template.js小小说明

    template.js 一款 JavaScript 模板引擎,简单,好用。提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据,生成对应数据产生的HTML片段,渲染不同的效果。

    简介

    主要的用途就是,在写好的模板上,放进数据,生成含有数据的html代码。一个超快的前端模板引擎。使用一个type="text/html"的script标签存放模板

    
                <script id="test" type="text/html">
                <h1>{{title}}</h1>
                <ul>
                    {{each list as value i}}
                        <li>索引 {{i + 1}} :{{value}}</li>
                    {{/each}}
                </ul>
                </script>
    
               var data = {
                    title: '标签',
                    list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']
                };
               var html = template('test', data);
               document.getElementById('content').innerHTML = html;
                

    模板语法

    有两个版本的模板语法可以选择。简洁语法 和 原生语法

    
            {{if admin}}
                {{include 'admin_content'}}
                {{each list}}
                    <div>{{$index}}. {{$value.user}}</div>
                {{/each}}
            {{/if}}
    
            <%if (admin){%>
                <%include('admin_content')%>
                <%for (var i=0;i<list.length;i++) {%>
                    <div><%=i%>. <%=list[i].user%></div>
                <%}%>
            <%}%>
                

    方法

    template(id, data)
    根据 id 渲染模板。内部会根据document.getElementById(id)查找模板。如果没有 data 参数,那么将返回一渲染函数。

    template.compile(source, options)
    将返回一个渲染函数

    
                 var source = '<ul>'
                  '{{each list as value i}}'
                      '<li>索引 {{i + 1}} :{{value}}</li>'
                  '{{/each}}'
                  '</ul>';
    
                var render = template.compile(source);
                var html = render({
                    list: ['摄影', '电影', '民谣', '旅行', '吉他']
                });
                
                document.getElementById('content').innerHTML = html;
                

    template.render(source, options)
    将返回渲染结果。

    template.helper(name, callback)
    添加辅助方法。

    template.config(name, value)
    更改引擎的默认配置。

    
            字段          类型              默认值           说明
           openTag          String 	    '{{' 	    逻辑语法开始标签
           closeTag         String 	    "}}" 	    逻辑语法结束标签
           escape           Boolean      true 	    是否编码输出 HTML 字符
           cache            Boolean      true 	    是否开启缓存(依赖 options 的 filename 字段)
           compress       Boolean 	  false     是否压缩 HTML 多余空白字符
                

    使用预编译

    include可嵌套子模板。

    
               //将id为list的模板包含进来         
                  {{include 'list'}}         
                

    转义

    
               //只需要加上“#”号,模板默认就不转义啦。
               <div id="content"></div>
                <script id="test" type="text/html">
                	<p>不转义:{{#value}}</p>
                	<p>默认转义: {{value}}</p>
                </script>
    
               var data = {
                 value: '<span style="color:#F00">hello world!</span>'
                  };
                var html = template('test', data);
                document.getElementById('content').innerHTML = html;
                

    在页面上打印你的数据。

    
               <script id="test" type="text/html">
                {{print a b c}}
                </script>
    
    
                var html = '';
                var data = {
                	a: 'hello',
                	b: '--world',
                	c: '--!!!'
                };
                html = template('test', data);
                document.write(html);
                

    另一个更快的 doT.js模板引擎

    模板是 :text/x-dot-template类型脚本

    使用方法:

    插值 {{=}}

    
            <div id="interpolation"</div>
    
    
            <script id="interpolationtmpl" type="text/x-dot-template">
               <div>Hi {{=it.name}}! </div>
               <div>{{=it.age || ''}}</div>
            </script>
    
    
            <script type="text/javascript">                          
               var dataInter = { "name": "Jake", "age": 31 };
               var interText = doT.template($("#interpolationtmpl").text());
               $("#interpolation").html(interText(dataInter));
            </script>
                

    for evaluation for in 循环 {{}} 赋值

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

    for array iteration 数组 {{~ }}数组遍历

    
               <div id="arrays"></div>
    
    
            <script id="arraystmpl" type="text/x-dot-template">                        
              {{~it.array:value:index}}
                 <div>{{= index+1 }}{{= value }}!</div>
              {{~}}
            </script>
    
            <script type="text/javascript">       
               var dataArr = {"array":["banana","apple","orange"]};
               var arrText = doT.template($("#arraystmpl").text());
               $("#arrays").html(arrText(dataArr));
             </script>
                

    for conditionals 条件 {{? }}

    
               // {{? }} if
               // {{?? }} else if
               // {{??}} else
            <div id="condition"></div>
    
            <script id="conditiontmpl" 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>
    
                

    编码 {{!it.uri}}

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

    {{#}} 自定义编译

    
            <div id="part"></div>
    
    
           <script id="parttmpl" type="text/x-dot-template">                        
           {{##def.snippet:
             <div>{{=it.name}}</div>{{#def.joke}}
           #}}
           {{#def.snippet}}
           {{=it.html}}
            </script>
    
            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));
                
  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/wwkk/p/6490249.html
Copyright © 2011-2022 走看看