Nunjucks
node.jsのテンプレートエンジンはたくさんあるけど、nunjucksはpythonで書けたりします。
詳しいドキュメントはこちらを参照。
https://mozilla.github.io/nunjucks/
Jinja2とほぼ一緒。
http://jinja.pocoo.org/docs/dev/
nunjucksのnpmをインストール
$ npm install nunjucks --save
app.jsで読み込み
app.js
var express = require('express');
var path = require('path');
var nunjucks = require('nunjucks');
var app = express();
// nunjucks view engine
nunjucks.configure('views', {
autoescape: true,
express: app
});
// setup view engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
express
を使っている場合は、nunjucks.configure
に指定してやる。
view engine
はhtml
に。
変数宣言
{% set x = 5 %}
変数表示
{{ x }}
if文
{% if variable %}
It is true
{% endif %}
for文
{% set items = [{"title": "a"}, {"title": "b"}] %}
{% for item in items %}
<p>{{ item.title }}</p>
{% endfor %}
日付フォーマットで変換したい場合
nunjucks-date-filterというライブラリを使ってみる。
momentを雛形に作られているみたいです。
nunjucks-date-filterとconsolidateをインストール
$ npm install nunjucks-date-filter --save
$ npm install consolidate --save
app.jsで設定
app.js
var express = require('express');
var path = require('path');
var nunjucks = require('nunjucks');
var dateFilter = require('nunjucks-date-filter');
var cons = require('consolidate');
var app = express();
// nunjucks view engine
cons.requires.nunjucks = require('nunjucks');
var env = cons.requires.nunjucks.configure('views', {
autoescape: true,
express: app
});
// date format
dateFilter.setDefaultFormat('YYYY-MM-DD');
env.addFilter('date', dateFilter);
// setup view engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
htmlでの記述方法
// with no format
This blog has been created at {{ creation_date | date }}.
// with a custom format
This blog has been created at {{ creation_date | date("YYYY") }}.
// with an addition first
This blog has been created at {{ creation_date | date("add", 7, "days") | date }}.