javascript 模板引擎,官网:https://github.com/aui/art-templatejavascript
分为原生语法和简洁语法,本文主要是讲简洁语法html
1、引入art-template.js文件java
<script src="template-debug.js"></script>
2、编写HTML模板git
<script id="test" type="text/html"> <h1>{{title}}</h1> </script>
3、向模板插入数据,并输出到页面github
var data = { title:"hello world" }; var html = template("test",data); document.getElementById('content').innerHTML = html;
<script id="test" type="text/html"> <h1>{{title}}</h1> </script>
//注意:{{title}}这是对内容编码输出,应该写成{{#title}}这是对内容不编码输出app
<script id="test" type="text/html"> <h1>{{#title}}</h1> </script> var data = { title:"<p>hello world</p>" }; var html = template("test",data); document.getElementById('content').innerHTML = html;
{{if value}} … {{else if value}} … {{else}} … {{/if}} art-template里面的流程控制就相对其余模板来讲强大不少了,直接看例子吧函数
<script id="test" type="text/html"> <div> {{if bok==22}} <h1>线上</h1> {{else if bok==33}} <h2>隐藏</h2> {{else}} <h3>走这里</h3> {{/if}} </div> </script> <script> var data = { "bok":22 }; var html = template('test',data); document.getElementById("app").innerHTML = html; </script>
嵌套的写法ui
<script id="test" type="text/html"> <div> {{if bok}} {{if list.length>=0}} {{each list}} <p>{{$index}}:{{$value}}</p> {{/each}} {{else}} <p>没有数据</p> {{/if}} {{/if}} </div> </script> <script> var data = { "bok":true, list:["a","b","c"] }; var html = template('test',data); document.getElementById("app").innerHTML = html; </script>
{{each name}} 索引:{{$index}} 值:{{$value}} {{/each}}编码
<script id="test" type="text/html"> <div> <ul> {{if c==100}} <ul> {{each person}} <li> 编号:{{$index+1}}--姓名:{{$value.name}}--年龄:{{$value.age}} </li> {{/each}} </ul> {{/if}} </ul> </div> </script> <script> var data = { c:100, person:[ {name:"jack",age:18}, {name:"tom",age:19}, {name:"jerry",age:20}, {name:"kid",age:21}, {name:"jade",age:22} ] }; var html = template("test",data); document.getElementById("content").innerHTML = html; </script>
经过template.helper(name,fnCallBack)注册方法 能够直接在{{}}中调用debug
<script id="test" type="text/html"> <div> {{if c==100}} <ul> {{each person}} <li>姓名:{{$value.name}}--性别:{{$value.sex|show}}</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.defaults.imports.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; var html = template("test",data); document.getElementById("app").innerHTML = html; </script>
{{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>