Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shepherdwind/velocity.js
velocity for js
https://github.com/shepherdwind/velocity.js
javascript velocity
Last synced: 24 days ago
JSON representation
velocity for js
- Host: GitHub
- URL: https://github.com/shepherdwind/velocity.js
- Owner: shepherdwind
- License: mit
- Created: 2012-09-29T03:20:12.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-04-04T02:22:28.000Z (3 months ago)
- Last Synced: 2024-05-15T15:54:39.442Z (about 1 month ago)
- Topics: javascript, velocity
- Language: JavaScript
- Homepage:
- Size: 3.2 MB
- Stars: 602
- Watchers: 58
- Forks: 145
- Open Issues: 4
-
Metadata Files:
- Readme: README-cn.md
- Changelog: History.md
- License: License
Lists
- awesome-github-star - velocity.js
- Awesome-GitHub-Repo - Velocity.js - JavaScript 模板引擎。[<img src="https://tva1.sinaimg.cn/large/008i3skNly1gxlhtmg11mj305k05k746.jpg" alt="微信" width="18px" height="18px" />](https://mp.weixin.qq.com/s?__biz=MzUxNjg4NDEzNA%3D%3D&chksm=f9a22984ced5a092b79362bb18932e8895ed01dba198513522bf50bec33c1458dd29805bd4da&idx=1&mid=2247498317&scene=21&sn=8d67a6067e8a30d2bc6548c3756621ad#wechat_redirect) (大厂开源 / 阿里开源)
README
Velocity - Template Engine
==========================
[![Build Status](https://travis-ci.org/shepherdwind/velocity.js.svg?branch=master)](https://travis-ci.org/shepherdwind/velocity.js)
[![Coverage Status](https://img.shields.io/coveralls/shepherdwind/velocity.js/master.svg?style=flat)](https://coveralls.io/r/shepherdwind/velocity.js)[![NPM](https://nodei.co/npm/velocityjs.png?downloads=true)](https://nodei.co/npm/velocityjs/)
velocity.js是[velocity](http://velocity.apache.org/)模板语法的javascript实现。
## Features
- 支持客户端和服务器端使用
- 语法分析和模板渲染分离
- 基本完全支持velocity[语法](http://velocity.apache.org/engine/devel/user-guide.html)
- [Vim Syntax](https://github.com/shepherdwind/vim-velocity)## Install
via npm:
```bash
$ npm install velocityjs
```## Broswer
兼容支持es5的浏览器,可以通过测试来验证[test case](http://git.shepherdwind.com/velocity.js/runner/tests.html)。
对于低端浏览器需要实现以下方法
1. Array.prototype的map, forEach, some, filter, every, indexOf
2. Date.now
3. Object.keys## Examples
在tests目录下有大量的例子,node和浏览器下使用是一致的,另外,examples目录下有一个
最简单的例子。## Public API
文件组织通过CommonJS方式,对于浏览器,通过spm可以打包为cmd模块。
```js
var Velocity = require('velocityjs');//1. 直接解析
Velocity.render('string of velocity', context, macros);//2. 使用parse和Compile
var Compile = Velocity.Compile;var asts = Velocity.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`的[实现](https://github.com/shepherdwind/velocity.js/blob/master/tests/compile.js#L532)。## Syntax
具体语法请访问官网文档:[velocity user guide](http://velocity.apache.org/engine/devel/user-guide.html)。
### Directives
Directives支持`set`, `foreach`, `if|else|elseif`, `macro`, `break`。不
支持有,`stop`, `evaluate`, `define`, `parse`。不过可以通过context来实现,比如
`parse` [实现](https://github.com/shepherdwind/velocity.js/blob/master/tests/compile.js#L458)。### macro与parse
宏分为系统的宏,比如`parse, include`,和用户自定义宏,通过`#macro`在vm中定义,此
外可以使用自定义的js函数替代在vm中定义。对于系统宏和自定义宏,不做区分,对于
`#parse`和`#include`的调用,可以使用自定义函数来执行,可以参考测试用例中self defined macro部分。## Questions
提问有几种方式
1. 新建[issue](https://github.com/shepherdwind/velocity.js/issues/new)
2. 邮件到eward.song at gmail.com
3. 阿里内部员工,可以通过hanwen.sah搜到我的旺旺## 其他
推荐一下沉鱼写的[velocity](https://github.com/fool2fish/velocity)。
## License
(The MIT License)