Package Exports
- velocityjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (velocityjs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Velocity - Template Engine
velocity.js是velocity模板语法的javascript实现。
##Features
- 支持客户端和服务器端使用
- 语法分析和模板渲染分离
- 基本完全支持velocity语法
- Vim Syntax
##Install
via npm:
$ npm install velocityjs
##Broswer
兼容支持es5的浏览器,可以通过测试来验证test case。
对于低端浏览器需要实现以下方法
- Array.prototype的map, forEach, some, filter, every, indexOf
- Date.now
- Object.keys
##Examples
在tests目录下有大量的例子,node和浏览器下使用是一致的,另外,examples目录下有一个 最简单的例子。
##Public API
文件组织通过CommonJS方式,对于浏览器,通过spm可以打包为cmd模块。
var Velocity = require('velocityjs');
//1. 直接解析
Velocity.render('string of velocity', context, macros);
//2. 使用Parser和Compile
var Parser = Velocity.Parser;
var Compile = Velocity.Compile;
var asts = Parser.parse('string of velocity');
(new Compile(asts)).render(context, macros);
####context
context
是一个对象,可以为空,执行中$foo.bar
,访问路径是context.foo.bar
,
context
的属性可以是函数,和vm中定义保持一致。
context中得函数,有一个固定的eval
方法,可以用来运算vm语法字符串,比如webx对应的
$control.setTemplate
的实现。
##Syntax
具体语法请访问官网文档:velocity user guide。
###Directives
Directives支持set
, foreach
, if|else|elseif
, macro
, break
。不
支持有,stop
, evaluate
, define
, parse
。不过可以通过context来实现,比如
parse
实现。
###macro与parse
宏分为系统的宏,比如parse, include
,和用户自定义宏,通过#macro
在vm中定义,此
外可以使用自定义的js函数替代在vm中定义。对于系统宏和自定义宏,不做区分,对于
#parse
和#include
的调用,可以使用自定义函数来执行,可以参考测试用例中self defined macro部分。
##Questions
提问有几种方式
- 新建issue
- 邮件到eward.song at gmail.com
- 阿里内部员工,可以通过hanwen.sah搜到我的旺旺
其他
推荐一下沉鱼写的velocity。
##License
(The MIT License)