3.2.0 • Published 6 years ago

brick-liquid v3.2.0

Weekly downloads
4
License
ISC
Repository
github
Last release
6 years ago

NPM version Build Status Coverage Status Dependency manager

Liquid Template Engine for Brick.js, implemented with sirlantis/liquid-node.

Installation

npm install -S brick-liquid

Set 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:

ALICE
3.2.0

6 years ago

3.1.6

7 years ago

3.1.5

7 years ago

3.1.4

7 years ago

3.1.3

7 years ago

3.1.2

7 years ago

3.1.0

8 years ago

3.0.2

8 years ago

3.0.1

8 years ago

3.0.0

8 years ago

2.0.7

8 years ago

2.0.6

8 years ago

2.0.5

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

1.1.0

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago