Odesza
The aim is to extend ES6 template strings to be a fully featured templating engine. Since everything is parsed as a template string under the hood, the code is short and easy to understand, and you don't need to learn anything except JavaScript syntax.
- multiple inheritance (partials, block scope, extends)
- inline ES6 JavaScript
- support for Express
Usage
Odesza can be used to render anything like sql or html. From code or the command line.
const odesza = ; odesza;// hello, foo // or render a template from a fileodesza;
Variables
Variables work the same as JavaScript template strings, surrounded by ${}
.
odesza;// hello world
JavaScript
You can use JavaScript just like in template strings
odesza;// hello wells, joe
You can also write more complicated inline functions
// template.ode$ { // Generates line-break separated list items based on a "names" array return names;}
Output:
1: wells2: joe3: dom
Partials
Include an odesza template inside another, for any number of levels.
odesza;
// welcome.odeinclude greetingWelcome $name!
// greeting.odeHello!
Output:
Hello!
Welcome, foo
Block Scope
Block scopes allow you to define a base template, so you can extend it and create many similar templates. In the base template, you create a block using block <block-name>
. In another "extended" template, you can speficy the contents of the blocks using the extends
keyword. Odesza enables you to extend a template as many times and levels as you want.
odesza;
// page.odeextends layout block content<p> Some content</p>endblock
// layout.ode<head> <title>$title</title></head><body> block content</body>
Output:
hello world Some content.
Comments
Comments work the same as in Javascript, and are ignored from the template output.
// line comments /* inline comments */ /** * block comments */
Express Support
app;app;
res;
Command Line
You can compile odesza templates from the command line to stdout
or an output file.
odesza <file> [-o <output>]
Install
project
npm i odesza --save
globally
npm i odesza -g
License
MIT