定义模板引擎
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});
在响应中呈现模板
向客户端发送响应模板有有两种方法:
- Express app对象发送;
- 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 );
});
});
时间: 2024-10-12 21:15:00