1. 程式人生 > >art-template的模板渲染

art-template的模板渲染

art-template的模板渲染

關於art-template的模板渲染方式

參考官網:link.

優點:

 1.基礎資料渲染
 2.輸出HTML
 3.流程控制
 4.遍歷
 5.呼叫自定義函式方法
 6.子模板引入

基礎的資料渲染

基礎資料渲染

一、引入art-template.js檔案

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

二、編寫HTML模板

<script id="test" type="text/html">
    <h1>{{title}}</h1>
</script>

三、向模板插入資料,並輸出到頁面

var data = {
    title:"hello world"
};
var html = template("test",data)
; document.getElementById('content').innerHTML = html; 輸出HTML <script id="test" type="text/html"> <h1>{{title}}</h1> </script> //注意:{{title}}這是對內容編碼輸出,應該寫成{{#title}}這是對內容不編碼輸出 //直接將script <script id="test" type="text/html"> <h1>{{#title}}</h1> </script> var
data = { title:"<p>hello world</p>" }; var html = template("test",data);

判斷的語法

條件判斷

{{if value}}
...
{{else if value}}
...
{{else}}
...
{{/if}}

迴圈遍歷

{{each name}}
索引:{{index}}
值:{{value}}
{{/each}}

呼叫自定義方法

通過template.helper(name,fnCallBack)註冊方法
可以直接在{{}}中呼叫
例子(程式碼抄用本人的親身用過,可以用)
<script id="test" type="text/html">
<div>
    {{if c==100}}
        <ul>
            {{each person}}
                <li>姓名:{{$value.name}}--性別:{{show($value.sex)}}</li>
            {{/each}}
        </ul>
 
    {{/if}}
</div>
</script>
<script>
    var data = {
        c:100,
        person:[
            {name:"jack",age:18,sex:1},
            {name:"tom",age:19,sex:0},
            {name:"jerry",age:20,sex:0},
            {name:"kid",age:21,sex:1},
            {name:"jade",age:22,sex:0}
        ]
    };
    //自定義函式
    template.helper("show",function(sex){
        console.log(sex);//同樣可以列印日誌到控制檯
        if(sex==0){
            return "男"
        }else if(sex==1){
            return "女"
        }
    });
    var html = template("test",data);
    document.getElementById("app").innerHTML = html;

呼叫子模板

{{include ‘main’}} 引入子模板,資料預設為共享
{{include ‘main’ a}} a為制定資料,但是同樣必須是父級資料,可以看看下面的例子,如果不注入的a的話,引入的子模板是接受不到資料的

例子(程式碼抄用本人的親身用過)
<body>
<div id="app"></div>
<script src="template-debug.js"></script>
<script id="main" type="text/html">
    <ul>
       {{each list}}
            <li>{{$value}}</li>
        {{/each}}
    </ul>
</script>
<script id="test" type="text/html">
    <div>
        <ul>
            {{each person}}
                <li>{{$value.name}}</li>
            {{/each}}
        </ul>
        {{include 'main' a}}
    </div>
</script>
<script>
    var data = {
        person:[
            {name:"jack",age:18},
            {name:"tom",age:19},
            {name:"jerry",age:20},
            {name:"kid",age:21},
            {name:"jade",age:22}
        ],
        a:{
            list:['文藝', '部落格', '攝影', '電影', '民謠', '旅行', '吉他']
        }
    };
    var html = template("test",data);
    document.getElementById("app").innerHTML=html;
</script>
</body>

關於template.js的方式

首先,template.js是一款JavaScript模板引擎,用來渲染頁面的。
原理:提前將Html程式碼放進編寫模板。

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

當需要渲染頁面時,在js裡這樣呼叫:

var tpl = document.getElementById('tpl').innerHTML; template(tpl, data});

template.js可以使用命令安裝,也可以在git上面下載:link.
在這裡插入圖片描述

<table id="table1"></table>
///template在jq的例子
<script type="text/html" id="template1">
    <tr>
        <td>${ID}</td>
        <td>${Name}</td>
    </tr>
</script>
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="jquery.tmpl.js"></script>
<script type="text/javascript">
    var users = [
        {
            ID: 'think8848',
            Name: 'Joseph Chan',
            Langs: [
                'Chinese',
                'English'
            ]
        },
        {
            ID: 'aCloud',
            Name: 'Mary Cheung',
            Langs: [
                'Chinese',
                'French'
            ]
        }
    ];
$('#template1').tmpl(users).appendTo('#table1')
</script>
可以看到模版被寫在了type為text/html的script標籤中,其中users是資料元,最後呼叫了一個$('#template1').tmpl(users)將資訊寫入模版,最後生成出的資訊插入dom中,即完成。ok,來看一下jQuery原型上的tmpl方法
<script>
tmpl: function( data, options, parentItem ) {
            return jQuery.tmpl( this[0], data, options, parentItem );//頁面呼叫的時候的入口方法,這會去呼叫jQuery上的tmpl方法
        }
  </script>     

詳情參照
jq-template.js的官方文件 link