第4章-模板引擎Jade和Handlebars-4.3.单独使用Jade

本文介绍如何在Node.js环境中独立使用Jade模板引擎,包括安装配置、动态生成HTML及三种不同的Jade API调用方式。

模板引擎并不总是和Node.js一起使用(也不总是和框架一起用,比如Express.js)
有时,我们可能只是单独使用Jade,比如生成一个邮件模板,发布前预编译Jade和调试等。

一、安装Jade模块

1.用命令$mkdir mode_modules创建一个空文件夹
2.用命令$npm install jade -save安装并添加jade到package.json

例:
假如我们有发送电子邮件的Node.js脚本,然后要用模板动态生成电子邮件的HTML,代码如下:(文件jade-example.jade)

.header
    h1= title
    p
.body
    p= body
.footer
    div= By
        a(href="http://weibo.com/#{author.weibo}")= author.name
    ul
        each tag, index in tags
            li= tag

在这个例子中,Node.js脚本需要填充数据,提供给模板的数据如下:

title:字符串
body:字符串
author:字符串
tags:数组

我们可以从多个源获取这些变量,如:数据库、文件系统、用户输入等。
在文件jade-example.js中,用编码的方式给title,author,tags传值,用命令行参数的方式给body传值:

var jade = require('jade');
    fs = require('fs');

var data = {
    title: "Node.js学习之路",
    author: {
        weibo: "@sqxj",
        name: "深情小建"
    },
    tags: ['express', 'node', 'javascript']
}
data.body = process.argv[2];

fs.readFile("jade-example.jade', 'utf-8', function(error, source){
    var template = jade.compile(source);//读取模板
    var html = template(data);//填充数据到模板
    console.log(html);
});

当我们运行$node jade-example.js 'email body'时,如图:
这里写图片描述

输出格式化后的HTML如下:

<div class="header">
    <h1>Node.js学习之路</h1>
    <p></p>
</div>
<div class="body">
    <p>email body</p>
</div>
<div class="footer">
    <div>
        <a href="http://weibo.com/@sqxj">深情小建</a>
    </div>
    <ul> 
        <li>express</li>
        <li>node</li>
        <li>javascript</li>
    </ul>
</div>

二、Jade文件读取API

除了jade.compile(),Jade API还有jade.render()和jade.renderFile()
用jade.render()重写前面例子:

var jade = require('jade');
    fs = require('fs');

var data = {
    title: "Node.js学习之路",
    author: {
        weibo: "@sqxj",
        name: "深情小建"
    },
    tags: ['express', 'node', 'javascript']
}
data.body = process.argv[2];

fs.readFile("jade-example.jade', 'utf-8', function(error, source){
    var html = jade.render(source, data);//读取模板并填充数据
    console.log(html);
});

=====================华丽丽的分割线===========================================
如果,用jade.renderFile(),文件jade-example.js会更简洁:

var jade = require('jade');
    fs = require('fs');

var data = {
    title: "Node.js学习之路",
    author: {
        weibo: "@sqxj",
        name: "深情小建"
    },
    tags: ['express', 'node', 'javascript']
}
data.body = process.argv[2];

jade.renderFile("jade-example.jade', data, function(error, html){
    console.log(html);
});

三、题外话

要想在浏览器中使用Jade的话,可以使用browserify和他的中间件jadeify

注:要想浏览器和服务器端使用相同的Jade模板,推荐Storify的jade-browser,jade-browser作为一个Express.js的中间件,他给浏览器提供了在服务器端模板中使用的一些实用函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值