JS模板引擎 :ArtTemplate

1.为什么需要用到模板引擎

我们在做前端开发的时候,有时候经常需要根据后端返回的json数据,然后来生成html,再显示到页面中去。

例如这样子:

var data = [
    {text: "测试一"},
    {text: "测试二"},
    {text: "测试三"},
    {text: "测试四"}
];
function generateList(data) {
    var listHtml = "";
    listHtml += "<ul>";
    for (var i = 0, len = data.length; i < len; i++) {
        listHtml += "<li>";
        listHtml += data.text;
        listHtml += "</li>";
    }
    listHtml += "</ul>";
    return listHtml;
}

但是,这种通过字符串拼接的方式,比较简单的还好,如果结构比较复杂,拼接的时候还需要注意引号之间的嵌套,这样的代码维护起来比较困难。

一旦需求发生变化,这里修改起来也是很麻烦。所以我们需要模板引擎来改善这种情况。

例如上面的例子,如果使用模板引擎则可以是这样子:

var data = {
    list:[
        {text: "测试一"},
        {text: "测试二"},
        {text: "测试三"},
        {text: "测试四"}
    ]
};
<script id="test" type="text/html">
    <ul>
        <% for (var i = 0; i < list.length; i ++) { %>
        <li><%= list[i].text %></li>
        <% } %>
    </ul>
</script>

不知道你有没有感觉简单一点呢,反正我是感觉更清晰明了一点。

2.artTemplate的介绍

artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。在 chrome 下渲染效率测试中分别是知名引擎 Mustache 与 micro tmpl 的 25 、 32 倍。

除了性能优势外,调试功能也值得一提。模板调试器可以精确定位到引发渲染错误的模板语句,解决了编写模板过程中无法调试的痛苦,让开发变得高效,也避免了因为单个模板出错导致整个应用崩溃的情况发生。

artTemplate 这一切都在 1.7kb(gzip) 中实现!

这是artTemplate的官网,使用方法相信有一定js基础的,看了文档之后都能够使用。这里就不详细介绍了。官网

3.artTemplate 模板引擎的基本原理

  模板引擎其实做的就是两件事。

  1. 根据一定的规则,解析我们所定义的模板
    这里,我们将模板定义在script标签中,然后,当我们使用到某个模板的时候,引擎会根据我们提供的ID,解析相应的模板,此时会返回一个渲染函数。(为了性能,还会将这个渲染函数缓存起来)

    (function($data,$filename) {
        ‘use strict‘;
        var i=$data.i,list=$data.list,$out=‘‘;$out+=‘<ul>\n‘;
        for (var i = 0; i < list.length; i ++) {
            $out+=‘\n        <li>‘;
            $out+= list[i].text;
            $out+=‘</li>\n‘;
        }
        $out+=‘\n</ul>‘;
        return new String($out);
    })

    上述代码,我已经删除了一些不必要的信息,解析模板之后,会返回一个这样的渲染函数。也就是说,其实模板引擎就是将我们平时用的字符串拼接的事情给做了。
    至于,引擎是如何解析的,在下一篇我会详细介绍

  2. 根据数据以及模板生成html(其实背后也是用的字符串拼接)
    这里,会根据用户所传的数据,然后调用上一步返回的渲染函数。得到我们想要的结果。

这是第一篇,先简单的介绍到这里,接下来会写另外几篇对artTemplate的源码进行讲解。

小弟才疏学浅,难免会对一些知识点以及一些细节讲的有些偏颇或者不够全面,望各位多多提出意见。

时间: 2024-10-10 08:24:27

JS模板引擎 :ArtTemplate的相关文章

js模板引擎--artTemplate

js模板引擎--artTemplate 以前研究过一段时间的handlebars,但因为其渲染性能略逊于腾讯的artTemplate(在artTemplate的GitHub官网上有推荐的性能测试地址),貌似最近耳边听到得最多的模板引擎也就是artTemplate了,所以就花个时间来研究下吧... artTemplate是新一代的javascript模板引擎,若采用拥有V8引擎的chrome浏览器进行测试,其渲染性能甚至能达到知名模板引擎Mustache的20倍以上以及模板引擎tmpl的40倍以上

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

art-template是款性能卓越的 js 模板引擎 https://aui.github.io/art-template/ 特性 拥有接近 JavaScript 渲染极限的的性能 调试友好:语法.运行时错误日志精确到模板所在行:支持支持在模板文件上打断点(Webpack Loader) 支持压缩输出页面中的 HTML.CSS.JS 代码 支持 Express.Koa.Webpack 支持模板继承与子模板 兼容 EJS.Underscore.LoDash 模板语法 模板编译后的代码支持在严格模

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

以前研究过一段时间的handlebars,但因为其渲染性能略逊于腾讯的artTemplate(在artTemplate的GitHub官网上有推荐的性能测试地址),貌似最近耳边听到得最多的模板引擎也就是artTemplate了,所以就花个时间来研究下吧... artTemplate是新一代的javascript模板引擎,若采用拥有V8引擎的chrome浏览器进行测试,其渲染性能甚至能达到知名模板引擎Mustache的20倍以上以及模板引擎tmpl的40倍以上,测试截图如下: 下面进入正题: 特性

js模板引擎——artTemplate的使用问题

最近在使用模板引擎,对于出现的错误做一个小总结. 想要在下拉框中使用模板,让下拉选项中的每一项都由模板显示. 用下面的写法会出错,只有一个下拉选项,所有的数据都在一行内. .... <select> <option id="temp"></option> <script type="text/html" id="test"> {{if data.count > 0}} {{each data.

js模板引擎-art-template常用

art-template javascript 模板引擎 分为原生语法和简洁语法,本文主要是讲简洁语法 基础数据渲染 输出HTML 流程控制 遍历 调用自定义函数方法 子模板引入 基础数据渲染 一.引入art-template.js文件 <script src="template-debug.js"></script> 二.编写HTML模板 <script id="test" type="text/html">

js模板引擎-art-template常用总结

art-template javascript 模板引擎,官网:https://github.com/aui/art-template 分为原生语法和简洁语法,本文主要是讲简洁语法 基础数据渲染 输出HTML 流程控制 遍历 调用自定义函数方法 子模板引入 基础数据渲染 一.引入art-template.js文件 <script src="template-debug.js"></script> 二.编写HTML模板 <script id="te

掌握js模板引擎

最近要做一个小项目,不管是使用angularjs还是reactjs,都觉得大材小用了.其实我可能只需要引入一个jquery,但想到jquery对dom的操作,对于早已习惯了双向绑定模式的我,何尝不是一种痛苦. 听过这样一句话:"技术没有缺席,只有姗姗来迟",很多技术自己不知道,并非没有.今天我想介绍的就是一个简单的js模板引擎artTemplate,让我们扬帆起航吧- 一.概述 artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充

JavaScript模板引擎artTemplate.js——结语

再次首先感谢模板的作者大神,再次放出github的地址:artTemplate性能卓越的js模板引擎 然后感谢博客园的一位前辈,他写的handlebars.js模板引擎教程,对我提供了很大的帮助,也是由此自己写了一份简单的artTemplate.js的总结. 由于这次是工作期间匆忙中写的,所以有些不完善的地方,后续会继续补充的.

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

最近做项目用了JS模板引擎渲染HTML,JS模板引擎是在去年做项目是了解到的,但一直没有用,只停留在了解层面,直到这次做项目才用到,JS模板引擎用了两个 BaiduTemplate 和 ArtTemplate. 项目之初用的是BaiduTemplate引擎,项目完成后发布到互联网,发现数据量大时,加载速度慢了点,就考虑换其它模板引擎是否能提高渲染效率,在网上查找.对比后发现ArtTemplate更好一点,就深入了解与学习了下,两个引擎语法有点差别,但结果是一至的,下面具体介绍一下两个引擎的使用情

JS模板引擎

JS模板引擎 :ArtTemplate 1.为什么需要用到模板引擎 我们在做前端开发的时候,有时候经常需要根据后端返回的json数据,然后来生成html,再显示到页面中去. 例如这样子: var data = [ {text: "测试一"}, {text: "测试二"}, {text: "测试三"}, {text: "测试四"} ]; function generateList(data) { var listHtml = &