[Node.js基础]学习①④--Nunjucks

http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014713964925087c29166d8c344a949364e40e2f28dc09000

Nunjucks

VS Code工程结构

use-nunjucks/
|
+- .vscode/
|  |
|  +- launch.json <-- VSCode 配置文件
|
+- views/
|  |
|  +- hello.html <-- HTML模板文件
|
+- app.js <-- 入口js
|
+- package.json <-- 项目描述文件
|
+- node_modules/ <-- npm安装的所有依赖包

package.json中添加nunjucks的依赖

"nunjucks": "2.4.2"

views

hello.html

<html>
<head>
    <title>Hello {{ name }}</title>
</head>
<body>
    <h3>Fruits List</h3>
    {% for f in fruits %}
    <p>{{ f }}</p>
    {% endfor %}
    <p>Total: {{ count|hex }}</p>
</body>
</html>

base.html

<html><body>
{% block header %} <h3>Unnamed</h3> {% endblock %}
{% block body %} <div>No body</div> {% endblock %}
{% block footer %} <div>copyright</div> {% endblock %}
</body>

extend.html

{% extends 'base.html' %}

{% block header %}<h1>{{ header }}</h1>{% endblock %}

{% block body %}<p>{{ body }}</p>{% endblock %}

app.js

const nunjucks = require('nunjucks');

function createEnv(path, opts) {
    var
        autoescape = opts.autoescape === undefined ? true : opts.autoescape,
        noCache = opts.noCache || false,
        watch = opts.watch || false,
        throwOnUndefined = opts.throwOnUndefined || false,
        env = new nunjucks.Environment(
            new nunjucks.FileSystemLoader(path, {
                noCache: noCache,
                watch: watch,
            }), {
                autoescape: autoescape,
                throwOnUndefined: throwOnUndefined
            });
    if (opts.filters) {
        for (var f in opts.filters) {
            env.addFilter(f, opts.filters[f]);
        }
    }
    return env;
}

var env = createEnv('views', {
    watch: true,
    filters: {
        hex: function (n) {
            return '0x' + n.toString(16);
        }
    }
});

var s = env.render('hello.html', {
    name: '<Nunjucks>',
    fruits: ['Apple', 'Pear', 'Banana'],
    count: 12000
});

console.log(s);

console.log(env.render('extend.html', {
    header: 'Hello',
    body: 'bla bla bla...'
}));

package.json

{
    "name": "use-nunjucks",
    "version": "1.0.0",
    "description": "Test nunjucks",
    "main": "app.js",
    "scripts": {
        "start": "node app.js"
    },
    "keywords": [
        "nunjucks",
        "templating"
    ],
    "author": "Michael Liao",
    "license": "Apache-2.0",
    "repository": {
        "type": "git",
        "url": "https://github.com/michaelliao/learn-javascript.git"
    },
    "dependencies": {
        "nunjucks": "2.4.2"
    }
}

终端命令

node app.js
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 1.按时间确定合理的目标 2.为达到目标进行坚持,不轻易放弃 3.坚持读书思考 4.坚持锻炼,早起,晚上空腹喝水,...
    eternaluve阅读 1,768评论 0 0
  • 今天是芒种,我在加班,却也是有心无力。天阴阴的,闷闷的,空气像是注了铅,沉沉的。没想到今年的芒种是这样的天气。 我...
    韩小曰阅读 1,521评论 1 1
  • L1 手帐基本 1. 写手账的目的 记录生活(生活很美好,我却如此暴躁,这样不好~) 自我管理(I like GT...
    9d19c1b95dd4阅读 1,625评论 0 0
  • 基本来自《flask web开发》。 1.判断结构 if...else 模板中(user.html): 视图函数中...
    Vcns阅读 4,245评论 0 0