由于目前主流的开发模型是mvc架构,也就是前端与后端完全分离的开发方式,因此越来越多的开发者采用后端直接发送ajax给前端,让前端自行解析来操作的方式了。
但是由于大家已经渐渐习惯了类似php,jsp这样嵌套html代码的方式,如果全部都通过id获取,在通过innerTHML的方式写入,对于大多数前端工程师来说是个灾难。
因此,js模板引擎在这个大趋势下诞生了。
下面我介绍一下我们公司一直在使用的模板引擎,artemplate。
这个是artemplate在github上的地址https://github.com/aui/art-template
artemplate有两套模板标签,一套是标准语法的模板标签,一套是另一套是原始语法的模板标签。
输出语句:
标准语法
{{value}} {{data.key}} {{data['key']}} {{a ? b : c}} {{a || b}} {{a + b}}
原始语法
<%= value %> <%= data.key %> <%= data['key'] %> <%= a ? b : c %> <%= a || b %> <%= a + b %>
判断语句:
标准语法
{{if value}} ... {{/if}} {{if v1}} ... {{else if v2}} ... {{/if}}
原始语法
<% if (value) { %> ... <% } %> <% if (v1) { %> ... <% } else if (v2) { %> ... <% } %>
循环语句:
标准语法
{{each target}} {{$index}} {{$value}} {{/each}}
原始语法
<% for(var i = 0; i < target.length; i++){ %> <%= i %> <%= target[i] %> <% } %>
变量定义与赋值:
标准语法
{{set temp = data.sub.content}}
原始语法
<% var temp = data.sub.content; %>
一个常用与ajax更新网站的示例:
php代码
<?php $arr = array ( 'name' => '沃航科技', 'sex' => '男', 'age' => '1岁' ); echo json_encode($arr, JSON_UNESCAPED_UNICODE); ?>
前端代码
<!doctype html> <html> <head> <meta charset="utf-8"> <title>arttemplate模板引擎</title> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <!-- template-web.js是arttemplate的库 资料查询网站为https://github.com/aui/art-template --> <script type="text/javascript" src="template-web.js"></script> <script type="text/javascript"> window.onload = function() { $.post('ajax.php', function(data) {//通过ajax获取数据 console.log(data); var arrs = $.parseJSON(data);//将json转化为js的object对象 var html = template('tpl', {//生成模板 target:arrs }); $('body').html(html);//添加到特定元素中去 }); } </script> </head> <body> <script id="tpl" type="text/html"> 姓名:<%= target['name'] %> 性别:<%= target['sex'] %> 年龄:<%= target['age'] %> </script> </body> </html>