🚀Velocity template engine for JavaScript and PHP.
Implementations of Apache Velocity template engine,including versions of JavaScript and PHP.
Import file velocity.js
, then use module velocity
which contains methods render
and compile
, both of which can be used as pure functions.
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."
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."
Import file velocity.php
, then use Main
class in the namespace PhpVelocity
. The Main
class contains the constructor and method render
.
The constructor is used to specify the compilation path and set the update checking switch of template files (with suffix .vm
).
Method render
combines the vts (in the path-specified file) and a data object, returning a string.
<?php
include './velocity.php';
use PhpVelocity\Main as Velocity;
$compile_dir = 'path/to/compiles';
// Specify the compilation path, and set the update checking switch for templates.
// If a template file is modified after its latest compilation, it should be re-compiled before being used for rendering.
$ve = new Velocity($compile_dir, true);
$data = array("name" => "June", "gender" => "female");
echo $ve->render('path/to/template1.vm', $data); // Render a template and a data object.
echo $ve->render('path/to/template2.vm'); // Render a template.
$data = array("name" => "Apple", "price" => 10000);
echo $ve->render('path/to/template3.vm', $data, true); // Render a template and a data object, and clean up the history data.
Script | Function
| :—-: | :—- |/server.js
| Run the server of the web application for debugging and testing./run_tests.sh
| Run the test runners in different language versions (JavaScript and Java for now), and run the output diffing./diff_output.sh
| Compare (namely diff) each case’s output of test runners in different languages (JavaScript and Java for now), and generate a report file./sync_dists.sh
| Build and distribute./build_*.js
| Build. Compile *.pegjs
grammar to a parser, then combine it with base codes, and generate the complete velocity
library file /src/[javascript|php]/velocity.[js|php]
.
Path | Explanation
| :—-: | :—- |/src/antlr
| antlr parser generator development for velocity template grammar./src/debug
| The WYSIWYG web application for debugging and testing./src/*
| Source codes of velocity implementation in different programming languages, and all dependencies./build/*/velocity.*
| Distribution codes, built from src
files./test/cases
| Test cases, each of which has a .vm
file and a .json
file./test/diff
| Diffing the output results of test runners in different language versions, generating file result.html
./test/*/src
| Source codes of test runners in different language versions. Test runners run upon test cases as the input, and output into output
folders of each language version./test/*/run.sh
| The test launcher for each language version./test/*/output/*.html
| Outputs of test runners in different language versions.
Copyright © 2017-present, shenfe