JS 模板引擎 BaiduTemplate 和 ArtTemplate 对比及应用

     最近作项目用了JS模板引擎渲染HTML,JS模板引擎是在去年作项目是了解到的,但一直没有用,只停留在了解层面,直到此次作项目才用到,JS模板引擎用了两个 BaiduTemplate 和 ArtTemplate。javascript

     项目之初用的是BaiduTemplate引擎,项目完成后发布到互联网,发现数据量大时,加载速度慢了点,就考虑换其它模板引擎是否能提升渲染效率,在网上查找、对比后发现ArtTemplate更好一点,就深刻了解与学习了下,两个引擎语法有点差异,但结果是一至的,下面具体介绍一下两个引擎的使用状况:
1、BaiduTemplate 下载地址:http://tangram.baidu.com/BaiduTemplate/
2、ArtTempate 下载地址:https://github.com/aui/artTemplate
 
性能测试 http://cdc.tencent.com/?p=5723
 
BaiduTemplate 代码引入
<script type="text/javascript">
    var html;
    var bt = baidu.template;
    $(function () {
        $.ajax({
            type: "GET",
            url: "/Json/Analysis.js",
            dataType: 'json',
            success: function (data) {
                html = bt('t:Jtlm_Analysis', {
                    list: data
                });
                document.getElementById('Jtlm_Analysis').innerHTML = html;
            }
        });
    });
</script>

模板定制html

<script id="t:Jtlm_Analysis" type="text/html">
    <% for(var i=0;i< list.length;i++){%>
    <div class="widget-box transparent collapsed">
        <div class="widget-header widget-header-flat">
            <h6 class="orange">
                <a href="/d/d/<%=list[i].Id%>" alt="<%=list[i].Title%>" title="<%=list[i].Title%>" target="_blank"><%=list[i].Title%></a>
            </h6>
            <div class="widget-toolbar">
                <a href="#" data-action="collapse">
                    <i class="icon-chevron-up"></i>
                </a>
                <a href="#" data-action="close">
                    <i class="icon-remove"></i>
                </a>
            </div>
            <div class="widget-toolbar">
                <a>
                    发布时间:<%=list[i].UpdateOn%>
                </a>
            </div>
        </div>
        <div class="widget-body">
            <div style="display: block;">
                <div class="widget-main">
                    <p class="alert alert-success">
                        <%=list[i].Summary%>【<a href="/d/d/<%=list[i].Id%>" target="_blank">详情</a>】
                    </p>
                </div>
            </div>
        </div>
    </div>
    <%}%>
</script>

渲染结果java

 

ArtTemplate 代码引入git

 $.ajax({
            type: "GET",
            url: "Json/HomeJsonFirst.js?r=" + Math.random(),
            dataType: 'json',
            success: function (data) {
                //Tab 切换
                html = template('t:layout_2', {
                    list: data.Layout_2
                });
                document.getElementById('layout_2').innerHTML = html;
                //看点
                html = template('t:layout_6', {
                    title: JLConsts.Group_Layout_6_Name,
                    list: data.Layout_6
                });
                document.getElementById('layout_6').innerHTML = html;
                //开心一刻
                html = template('t:layout_7', {
                    title: JLConsts.Group_Layout_7_Name,
                    list: data.Layout_7
                });

 

ArtTemplate 模板github

<script id="t:layout_8" type="text/html">
    <h4>{{title}}<i></i></h4>
    {{each list as value i}}
    <dl class="cf">
        {{each value.HList as a i}}
        <dd>
            <a title="{{a.Title}}" alt="{{a.Title}}" target="_blank" href="/Detail/d/{{a.Id}}">
                <img src="{{a.ImgSrc}}" title="{{a.Title}}" alt="{{a.Title}}" />
            </a>
        </dd>
        <dt>
            <a target="_blank" href="/Detail/d/{{a.Id}}" title="{{a.Title}}" alt="{{a.Title}}">{{a.Title}}</a>
        </dt>
        {{/each}}
    </dl>
    <ul>
        {{each value.List as l i}}
        <li>
            {{each l.List as a i}}
            <a title="{{a.Title}}" alt="{{a.Title}}" target="_blank" href="/Detail/d/{{a.Id}}">{{a.Title}}</a>
            {{/each}}
        </li>
        {{/each}}
    </ul>
    {{/each}}
</script>

渲染结果ajax

 

基本遍历模板json

多层遍历模板dom

简单的 if else性能

Json构造结果学习

 
经过对比,ArtTemplate渲染的速度更快一点,对于不常常更新的数据,咱们能够采用定时生成Json,经过ArtTemplate引擎进行渲染,这样能够大大提升网站的访问速度,
相关文章
相关标签/搜索