介绍
art-template 是一个简约、超快的模板引擎。
它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。
特性
- 拥有接近 JavaScript 渲染极限的的性能
 - 调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader)
 - 支持 Express、Koa、Webpack
 - 支持模板继承与子模板
 - 浏览器版本仅 6KB 大小
 
安装
服务端安装
npm install art-template --save
客户端安装
下载工具包引用(6KB)
配置
// 模板名filename: null,// 模板语法规则列表rules: [nativeRule, artRule],// 是否开启对模板输出语句自动编码功能。为 false 则关闭编码输出功能// escape 可以防范 XSS 攻击escape: true,// 启动模板引擎调试模式。如果为 true: {cache:false, minimize:false, compileDebug:true}debug: detectNode ? process.env.NODE_ENV !== 'production' : false,// bail 如果为 true,编译错误与运行时错误都会抛出异常bail: true,// 是否开启缓存cache: true,// 是否开启压缩。它会运行 htmlMinifier,将页面 HTML、CSS、CSS 进行压缩输出// 如果模板包含没有闭合的 HTML 标签,请不要打开 minimize,否则可能被 htmlMinifier 修复或过滤minimize: true,// 是否编译调试版compileDebug: false,// 模板路径转换器resolveFilename: resolveFilename,// 子模板编译适配器include: include,// HTML 压缩器。仅在 NodeJS 环境下有效htmlMinifier: htmlMinifier,// HTML 压缩器配置。参见 https://github.com/kangax/html-minifierhtmlMinifierOptions: {collapseWhitespace: true,minifyCSS: true,minifyJS: true,// 运行时自动合并:rules.map(rule => rule.test)ignoreCustomFragments: []},// 错误事件。仅在 bail 为 false 时生效onerror: onerror,// 模板文件加载器loader: loader,// 缓存中心适配器(依赖 filename 字段)caches: caches,// 模板根目录。如果 filename 字段不是本地路径,则在 root 查找模板root: '/',// 默认后缀名。如果没有后缀名,则会自动添加 extnameextname: '.art',// 忽略的变量。被模板编译器忽略的模板变量列表ignore: [],// 导入的模板变量imports: runtime
使用
目录结构
具体配置
// view engine setupapp.engine('art', require('express-art-template'));app.set('view options', {debug: process.env.NODE_ENV !== 'production',escape: false // 转化HTML5代码});app.set('views', path.join(__dirname, './view'));app.set('view engine', 'art')
渲染方式
import template from "art-template/lib/template-web.js"let templateForIndex = "<h1>{{ content }}</h1>"// 以下两种方式,二选一即可。// 使用 renderdocument.getElementById("container").innerHTML = template.render(templateForIndex, {content: "哈哈哈"});// 使用 compilelet renderFunction = template.compile(templateForIndex);document.getElementById("container").innerHTML = renderFunction({content: "哈哈哈"})
