在Express中使用模板引擎
来源:互联网 发布:怎么申请不了淘宝直播 编辑:程序博客网 时间:2024/05/17 01:41
定义模板引擎
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 ); // 注册html模板引擎 app.set('view engine', 'html'); // 将模板引擎换成html
一旦,扩展名被注册,引擎回调函数被调用执行呈现具有该扩展名的模板。
当使用的是express-handlebars模块时:
app.set('view engine', 'hbs');或者,使用html扩展时app.set('view engine', 'html');app.engine('html', require('hbs')._express);
当使用的是express3-handlebars方法时:
app.engine('handlebars', exphbs({defaultLayout: 'main'}));app.set('view engine', 'handlebars');
添加本地对象
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 ); });});
1 0
- 在Express中使用模板引擎
- 在Express中使用Handlebars模板引擎
- 在express中使用ejs模板引擎
- 在Express项目中使用Handlebars模板引擎
- 19.Express 中使用模板引擎
- Express中使用自定义视图模板引擎
- 在express 模板引擎的路由中加载socket.io
- 17.express 的模板引擎使用
- 在Karrigell中使用Cheetah模板引擎
- 在SpringMVC 中使用 Thymeleaf 模板引擎
- express ejs模板引擎
- Express修改模板引擎
- Express框架中如何引用ejs模板引擎
- node+express 项目中安装ejs模板引擎
- express框架中如何引用ejs模板引擎
- express中创建ejs项目以及引用ejs模板引擎
- Express框架中如何引用ejs模板引擎
- Express---jade模板引擎(二)
- 网络爬虫
- 深拷贝、浅拷贝
- POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;
- Python正则表达式指南
- 斐波那契数列的非递归c语言实现以及斐波那契数列的应用
- 在Express中使用模板引擎
- 动态规划10010
- HDU 1164 Eddy's research I
- 多线程安全计数器
- REACT学习笔记
- E: Some index files failed to download. They have been ignored, or old ones used instead.
- 杭电oj~~2005
- Problem A: 求倒数和【简单循环】
- leetcode--001. Two Sum