2.0.0 • Published 6 years ago

velocity-template-engine v2.0.0

Weekly downloads
19
License
MIT
Repository
github
Last release
6 years ago

This is a JavaScript implementation of Apache Velocity template engine.

Quick Start

npm install --save velocity-template-engine

The module contains methods render and compile, both of which can be used as pure functions.

rendering a template

Method render combines a velocity template string (vts below for short) and a data object, returning a string.

Example:

var tmpl = 'My name is ${name}. I\'m a #if($gender == "male")boy#{else}girl#end.';
var data = {
    name: 'June',
    gender: 'female'
};
window.velocity.render(tmpl, data); // "My name is June. I'm a girl."

Additionally, there is a third parameter, an options object.

Option PropertyMeaning
tmplIdA string or function representing the uniqueness of the template. For caching.
dataIdA function which accepts the data and returns the unique id string of the data. For caching.
noCacheWhether disable caching or not.

compiling a template to a function

Method compile compiles a vts to a pure function or a string of pure function body (to be written into files).

Example:

var tmpl = 'My name is ${name}. I\'m a #if($gender == "male")boy#{else}girl#end.';
var render = window.velocity.compile(tmpl);

// The second argument is options, and the `raw` property indicates whether to compile the vts to a string or not.
var render_raw = window.velocity.compile(tmpl, { raw: true });

var data = {
    name: 'June',
    gender: 'female'
};

render(data); // "My name is June. I'm a girl."
(new Function(render_raw))(data); // "My name is June. I'm a girl."

Directives

NameUsageExample
ifCondition.#if($a) a #elseif($b) b #else c #end
foreachLoop.#foreach($item in $list) $velocityCount: $item #end
setAssign a variable, declaring it at the same time if not exist.#set($a = 1)
defineDefine a variable as a block of VTL.#set($name = "Tom") #set($gender = "male") #define($a) $name is $gender #end $a
macroDefine a functional directive as a macro of VTL.#macro(a $name $gender) $name is $gender #end #a("Tom" "male")

More

License

MIT

Copyright (c) 2017-present, shenfe

2.0.0

6 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago