模板引擎art-template记录
1. 关于
art-template 是一个简约、超快的模板引擎,相类似的还有百度模版引擎等。
它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。
2.安装
- 通过 npm 安装:
npm install art-template --save
- 下载安装
2.1 编译
因为浏览器不支持文件系统,所以 template(filename, data) 不支持传入文件路径,它内部使用 document.getElementById(filename).innerHTML 来获取模板,例如:
1 |
|
3. 语法
art-template 同时支持两种模板语法。标准语法可以让模板更容易读写;原始语法具有强大的逻辑处理能力。
art-template 支持标准语法与原始语法。标准语法可以让模板易读写,而原始语法拥有强大的逻辑表达能力。
标准语法支持基本模板语法以及基本 JavaScript 表达式;原始语法支持任意 JavaScript 语句,这和 EJS 一样。
3.1 模版绑定
1 | // 标准语法 {{if user}} |
3.2 自定义输出
1 | // 标准语法 {{value}} {{data.key}} {{data['key']}} {{a ? b : c}} {{a || b}} {{a |
3.3 原文输出
1 | // 标准语法 {{@ value}} // 原始语法 <%- value %> |
3.4 条件输出
1 | // 标准语法 |
3.5 循环输出
target
是一个数组,each
用于对数组遍历,$index
是数组的下标, $value
是数组的值,并且target
支持 array
与object
的迭代,其默认值为 $data
1 | // 标准语法 {{each target}} {{$index}} {{$value}} {{/each}} // 原始语法 <% for |
3.6 自定义变量
1 | // 标准语法 {{set temp = data.sub.content}} // 原始语法 <% var temp = |
3.7 模板继承
模板继承允许你构建一个包含站点共同元素的基本“模板骨架”
1 | // 标准语法 {{extend './layout.html'}} {{block 'head'}} ... {{/block}} // |
3.8 子模版
1 | // 标准语法 {{include './header.art'}} {{include './header.art' data}} // |
4. 调试器
art-template 内建调试器,能够捕获到语法与运行错误,并且支持自定义的语法。在 NodeJS 中调试模式会根据环境变量自动开启:process.env.NODE_ENV !== 'production'
设置 template.defaults.debug=true 后,等同于:
1 | { "cache": false, "minimize": false, "compileDebug": true } |
5. 模板变量
template.defaults.imports
模板通过 $imports
可以访问到模板外部的全局变量和导入的变量。
5.1 变量使用
template.defaults.imports.log = console.log;
<% $imports.log('Hello, template.defaults.imports.log') %>
5.2 内置变量清单
$data
传入模板的数据;$imports
外部导入的变量以及全局变量;print
字符串输出函数;include
子模板载入函数extend
模板继承模板导入函数block
模板块生命函数
模板引擎art-template记录
https://blog.catooilg.com/2020/09/10/yuque/模板引擎art-template记录/