JavaScript 模板引擎:Velocity.js
jopen
10年前
velocity.js是velocity模板语法的javascript实现。Velocity 是基于Java的模板引擎,广泛应用在阿里集体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含基本数据类型、变量赋值和函数等功能。
Features
- 支持客户端和服务器端使用
- 语法是富逻辑的,构成门微型的语言
- 语法分析和模板渲染分离
- 基本完全支持velocity语法
- 浏览器使用支持模板之间相互引用,依据kissy模块加载机制
- 三个Helper,友好的数据模拟解决方案
- Vim Syntax
Install
via npm:
$ npm install velocity.js
Broswer Support
点击此处可以体验web 端velocity语法解析过程,注:使用ACE作为代码编辑器,仅支持高级浏览器访问。
执行cake
命令进行打包velocity.js浏览器端脚本:
$ cake --build
需要cli下安装coffeejs,暂时打包是为kissy所使用的,velocity.js需要的一些常用的 ecma5功能,比如foreach, some, isArray
等,在node环境下是自带的功能,而web端的兼容是交给已有的类库解决。需要自行提供一组跨浏览器的api,比如kissy打包:
//api map var utils = { forEach : S.each, some : S.some, mixin : S.mix, guid : S.guid, isArray : S.isArray, indexOf : S.indexOf, keys : S.keys, now : S.now };
Velocity语法具有很高的容错能力,类似于html结构的解析,同时语法规则复杂,所以语法解释器执行性能可能比较慢,velocity.js
把语法结构分析运算和语法执行两个过程独立出来,第一步,语法结构分析返回一个数组(语法树),描述velocity语法,语法执行使用数据和语法树,计算模板最终结果。
执行build后,得到两个文件,分别是build/velocity/
下的index.js
和parse.js
,两者相互独立,parse.js
语法分析过程可以放在本地完成,执行命令:
把语法分析和模板拼接分开,为了方便在本地编译语法树,减少在web端js运算。本地编译模板的思路,源自KISSY的xtemplate。