zoukankan      html  css  js  c++  java
  • art-template学习(一)之特性和安装

    介绍

    art-template 是JavaScript模板引擎,是一个简约、超快的模板引擎。

    它采用预编译方式让性能有了质的飞跃,从而获得接近 JavaScript 极限的运行性能,使得其性能无论在前端还是后端都有极其出色的表现。在 chrome 下渲染效率测试中分别是知名引擎

    Mustache与 micro tmpl 的 25 、 32 倍。并且同时支持 NodeJS 和浏览器在线速度测试。除了性能优势外,调试功能也值得一提。模板调试器可以精确定位到引发渲染错误的模板语句,解

    决了编写模板过程中无法调试的痛苦,让开发变得高效,也避免了因为单个模板出错导致整个应用崩溃的情况发生。

    特性

    • 性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍
    • 拥有接近 JavaScript 渲染极限的的性能

    • 调试友好:支持运行时调试,语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader)

    • 支持node、 Express、Koa、Webpack

    • 支持模板继承与子模板

    • 浏览器版本仅 6KB 大小

    • 安全,默认对输出进行转义、在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板)

    • 支持所有流行的浏览器

    • 模板语句简洁,无需前缀引用数据,有简洁版本与原生语法版本可选

    • 支持预编译,可将模板转换成为非常精简的 js 文件

    • 可在浏览器端实现按路径加载模板

    模板语法

    art-template 同时支持两种模板语法。标准语法可以让模板更容易读写;原始语法具有强大的逻辑处理能力。

    标准语法

    {{if user}}
    <h2>{{user.name}}</h2>
    {{/if}}

    原始语法

    <% if (user) { %>
    <h2><%= user.name %></h2>
    <% } %>

    原始语法兼容 EJSUnderscoreLoDash 模板。

    编写模板

    <script id="test" type="text/html">
    <h1>{{title}}</h1>
    <ul>
        {{each list as value i}}
            <li>索引 {{i + 1}} :{{value}}</li>
        {{/each}}
    </ul>
    </script>

     

    渲染模板

    方式一:浏览器

    var data = {
        title: '标签',
        list: ['文艺''博客''摄影''电影''民谣''旅行''吉他']
    };
    var html = template('test', data);
    document.getElementById('content').innerHTML = html;

    方式二:node,使用标准语法


    var template = require('art-template');
    var html = template(__dirname + '/tpl-user.art', {
      user: {
        name: 'aui'
      }
    });

    方式三:node,使用原始语法

    var template =require('art-template/node/template-native.js')
    var html = template(__dirname + '/tpl-user.art', {
      user: {
        name: 'aui'
      }
    }); 

     


    核心方法

    // 基于模板名渲染模板,

    template(filename, data);

    // 根据 id 渲染模板。内部会根据document.getElementById(id)查找模板。如果没有 data 参数,那么将返回一渲染函数。

    template(id, data)

    // 将模板源代码编译成函数,返回渲染函数

    template.compile(source, options); 

    // 将模板源代码编译成函数并立刻执行,返回渲染结果

    template.render(source, data, options);

    // 添加辅助方法例如时间格式器

    template.helper(name, callback)

    // 更改引擎的默认配置

    template.config(name,value)

     

     

    安装

    Npm

    npm install art-template --save

    在浏览器中实时编译

    载:template-web.js(gzip: 6kb)

    兼容

    IE8+(IE8 需要补丁才能运行。示例

    差异

    因为浏览器不支持文件系统,所以 template(filename, data) 不支持传入文件路径,它内部使用 document.getElementById(filename).innerHTML 来获取模板,例如:

    <script src="lib/template-web.js"></script>
    <script id="tpl-user" type="text/html">
    {{if user}}
    <h2>{{user.name}}</h2>
    {{/if}}
    </script>

    在浏览器中预编译

    使用 Webpack 的 Loader: art-template-loader

    插件

     

  • 相关阅读:
    ios awakeFromNib 和 initWithCoder:
    iOS 关于iphone6 和 iphone6 plus 的适配
    iOS 目录的使用
    iOS 8 WKWebView 知识点
    iOS 动画结束后 view的位置 待完善
    iOS coredata 数据库升级 时报Can't find model for source store
    iOS 真机文件系统区分大小写,而模拟器可能不区分
    iOS coredata 级联删除
    iOS 关于AFNetworking ssl 待完成
    iOS 关于UIWindow的理解
  • 原文地址:https://www.cnblogs.com/kunmomo/p/10179845.html
Copyright © 2011-2022 走看看