JSPM

  • Created
  • Published
  • Downloads 517302
  • Score
    100M100P100Q179260F

Velocity Template Language(VTL) for JavaScript

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

Build Status NPM version

NPM

velocity.js是velocity模板语法的javascript实现。

##Features

  • 支持客户端和服务器端使用
  • 语法分析和模板渲染分离
  • 基本完全支持velocity语法
  • Vim Syntax

##Install

via npm:

$ npm install velocityjs

##Broswer

兼容支持es5的浏览器,可以通过测试来验证test case

对于低端浏览器需要实现以下方法

  1. Array.prototype的map, forEach, some, filter, every, indexOf
  2. Date.now
  3. 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.barcontext的属性可以是函数,和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

提问有几种方式

  1. 新建issue
  2. 邮件到eward.song at gmail.com
  3. 阿里内部员工,可以通过hanwen.sah搜到我的旺旺

其他

推荐一下沉鱼写的velocity

##License

(The MIT License)