brick-liquid v3.2.0
Liquid Template Engine for Brick.js, implemented with sirlantis/liquid-node.
Installation
npm install -S brick-liquidSet template engine for brick.js
var brickJs = require('brick.js');
var Liquid = require('brick-liquid');
var brk = brickJs();
var liquid = Liquid({
cache: false // disabled by default, see below
});
brk.engine('.liquid', liquid); // set liquid engine for .liquid file
brk.engine('.html', liquid); // set liquid engine for .html file
app.use('/', brk.express);Include Modules(Partials)
In Brick.js, partials are organized as modules,
Sub-modules are imported by include. For example:
<html>
<body>
<div class="container">
{%include "user-list"%}
</div>
</body>
</html>Above template will import module user-list in root directory with local context.
Layouts
Brick-liquid render is implemented asyncly to support template layout.
Module homepage:
{%layout 'default'%}
<div class="container"> Hello! </div>Module default:
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{title}}</title>
<meta charset="UTF-8">
</head>
<body> {% block %} </body>
</html>homepage will be rendered and then replace {% block %} declaration in default.
In the meantime, the local context within homepage will be passed into default.
Options
cache
Type: Bool
Default: false
If set to true, all templates will be loaded only once (for production usage). Otherwise, template file will be reloaded on every HTTP request.
Registration of New Filter
Brick-liquid is implemented with harttle/liquidjs internaly.
And the liquid object defined above is compatible with harttle/liquidjs engine object.
Javascript:
liquid.registerFilter('upper', function(v){
return v.toUpperCase();
});Template:
<h3>{{ 'alice' | upper }}</h3>Output:
<h3>ALICE</h3>Registration of New Tag
Registration of new tag is compatible with harttle/liquidjs.
Javascript:
engine.registerTag('upper', {
parse: function(tagToken, remainTokens) {
this.str = tagToken.args; // name
},
render: function(scope, hash) {
var str = Liquid.evalValue(this.str, scope); // 'alice'
return str.toUpperCase(); // 'Alice'
}
});Template:
{% upper 'alice' %}Output:
ALICE8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago