码迷,mamicode.com
首页 > 其他好文 > 详细

在Express中使用模板引擎

时间:2016-05-07 07:16:38      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

定义模板引擎

var  app = express();
app.set(‘views‘, ‘./views‘);  // 指定模板文件存放位置
app.set(‘view engine‘, ‘jade‘)  // 设置默认的模板引擎

注册指定扩展名的模板引擎:

app.engine(‘jade‘, require(‘jade‘)._express )

注意: _express函数是许多模板引擎提供的回调函数。但是这个函数只能在默认的文件扩展名上工作。但是,有种情况我们使用的不是对应模板引擎的扩展名的或怎么办呢?这时不能再调用_express函数。在这种情况下我们可以使用一个替代的函数,例如: 在EJS中提供了renderFile函数来完成相同的功能。

看下下面的两段代码:

app.engine( ‘ejs‘, require(‘ejs‘)._express )
app.engine( ‘html‘, require(‘ejs‘.renderFile) )

一旦,扩展名被注册,引擎回调函数被调用执行呈现具有该扩展名的模板。

添加本地对象

express() app对象提供了app.locals属性来存储本地变量, app.locals实际上是一个函数对象,这意味着可以有两种方式来设置变量。

方式一:

app.locals.title = "Hello World";
app.locals.version = 1.0;

方式二:

app.locals({title: "Hello World", version: 1.0});

在响应中呈现模板

向客户端发送响应模板有有两种方法:

  1. Express app对象发送;
  2. Response对象发送;

1>、通过Express app对象发送

语法格式,如下:

app.render(view,  [locals],  callback);

view: 模板文件名;
[locals]: 一个locals对象(即在app.locals中定义的locals对象)。
callback: 回调函数,在模板呈现后执行。接受两个参数。第一个,err-错误对象。第二个, renderedData——呈现后的模板字符串。

2>、Response对象发送

语法格式,如下:

res.render(‘模板文件名(无后缀)‘);

这种方法直接把模板呈现为一个响应,所要呈现的结果在响应中自动发送。

下面,看看下面示例代码:

var express = require(‘express‘),
    jade    = require(‘jade‘),
    ejs     = require(‘ejs‘);

var app = express();
app.set(‘views‘, ‘./views‘);
app.set(‘view engine‘, ‘jade‘);
app.engine(‘jade‘, jade._express);
app.engine(‘html‘, ejs.renderFile);

app.listen( 8080 );

app.locals({
    uname: ‘G‘,
    vehicle: ‘Pandora‘,
    terrain: ‘Mountains‘,
    climate: ‘Desert‘,
    location: ‘Unknown‘
});

app.get(‘/jade‘, function(req, res) {
    res.render(‘user_jade‘);
});

app.get(‘/ejs‘, function(req, res) {
    app.render(‘user_ejs.html‘, function(err, renderedData) {
        res.send( renderedData );
    });
});

在Express中使用模板引擎

标签:

原文地址:http://blog.csdn.net/u014695532/article/details/51334806

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!