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

     项目之初用的是BaiduTemplate引擎,项目完成后发布到互联网,发现数据量大时,加载速度慢了点,就考虑换其它模板引擎是否能提高渲染效率,在网上查找、对比后发现ArtTemplate更好一点,就深入了解与学习了下,两个引擎语法有点差别,但结果是一至的,下面具体介绍一下两个引擎的使用情况:
一、BaiduTemplate 下载地址:http://tangram.baidu.com/BaiduTemplate/
二、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>

模板定制

<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>

渲染结果

ArtTemplate 代码引入

 $.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 模板

<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>

渲染结果

基本遍历模板

多层遍历模板

简单的 if else

Json构造结果

 
通过对比,ArtTemplate渲染的速度更快一点,对于不经常更新的数据,我们可以采用定时生成Json,通过ArtTemplate引擎进行渲染,这样可以大大提高网站的访问速度,

JS 模板引擎 BaiduTemplate 和 ArtTemplate 对比及应用的更多相关文章

  1. 百度JS模板引擎 baiduTemplate 1.0.6 版

    A.baiduTemplate 简介 0.baiduTemplate希望创造一个用户觉得“简单好用”的JS模板引擎 注:等不及可以直接点左侧导航中的”C.使用举例“,demo即刻试用. 1.应用场景: ...

  2. baiduTemplate.js 百度JS模板引擎

    baiduTemplate希望创造一个用户觉得“简单好用”的JS模板引擎 先展示两个例子,然后说说对baidutemplate.js的理解,从而将这一工具加到个人百宝箱里. <script id ...

  3. 各种JS模板引擎对比数据(高性能JavaScript模板引擎)

    最近做了JS模板引擎测试,拿各个JS模板引擎在不同浏览器上去运行同一程序,下面是模板引擎测试数据:通过测试artTemplate.juicer与doT引擎模板整体性能要有绝对优势: js模板引擎 Ja ...

  4. 性能卓越的js模板引擎--artTemplate

    artTemplate能够将数据与View视图的分离,充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现. 在 chrome 下渲染效率测试中分别是知名引擎 Mu ...

  5. js模板引擎--artTemplate

    js模板引擎--artTemplate 以前研究过一段时间的handlebars,但因为其渲染性能略逊于腾讯的artTemplate(在artTemplate的GitHub官网上有推荐的性能测试地址) ...

  6. js模板引擎art-template使用方法

    art-template是款性能卓越的 js 模板引擎 https://aui.github.io/art-template/ 特性 拥有接近 JavaScript 渲染极限的的性能 调试友好:语法. ...

  7. doT js 模板引擎【初探】要优雅不要污

    js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...

  8. js模板引擎介绍搜集

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  9. 浅析js模板引擎

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

随机推荐

  1. 前台JS(type=‘file’)读取本地文件的内容,兼容各种浏览器

    [自己测了下,能兼容各种浏览器,但是读取中文会出现乱码.自己的解决方法是用notepad++把txt文件编码改为utf-8(应该是和浏览器编码保持一致吧?..)] 原文  http://blog.cs ...

  2. C语言之贪吃蛇

    利用链表的贪吃蛇,感觉自己写的时候还是有很多东西不熟悉, 1.预编译 2.很多关于系统的头文件也不是很熟悉 3.关于内存 第一个是.h头文件 #ifndef _SNAKE_H_H_H #define ...

  3. Gulp入门教程(转载)

    本人转载自: Gulp入门教程

  4. C#,JS获取mac地址

    js: function MacInfo() { var locator = new ActiveXObject("WbemScripting.SWbemLocator"); va ...

  5. eclipse jetty插件安装(离线版)

    按照网上的说法安装jetty插件,run-jetty-run,google那个网址根本链接不上.所以插件装不上,网上搜索本地版,试了几个都不好使,功能不全,这是因为下载的本地资源jar包不全导致,好坑 ...

  6. python进程池剖析(一)

    python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要 ...

  7. JS定时器的使用--数码时钟

    <title>无标题文档</title> <script> function toDou(n){ if(n<10){ return '0'+n; }else{ ...

  8. Ubuntu下安装Hudson

    因为hudson需要依赖java等,手动安装比较费劲 官方给出了一种很简单的解决方案:http://wiki.eclipse.org/Hudson-ci/Installing_Hudson_DEB 1 ...

  9. css3D的魅力

    前言: 最近玩了玩用css来构建3D效果,写了几个demo,所以博客总结一下.  在阅读这篇博客之前,请先自行了解一下css 3D的属性,例如:transform-style,transform-or ...

  10. c/c++ 多线程 std::call_once的应用

    多线程 std::call_once的应用 std::call_once的应用:类成员的延迟初始化,并只初始化一次.和static的作用很像,都要求是线程安全的,c++11之前在多线程的环境下,sta ...