打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Express 4.0 升级手记【站长博客网】

Express 4.0 升级手记

2014-04-25作者:冰河来源:Lost JavaScript675次阅读

前几天著名的 Web 框架 [express] 更新到了 4.0 版,这个版本带来了一些比较大的更新,并且不再向下兼容 3.x 版。今天花了一点时间把项目升级到了 4.0 版,在此记录以下遇到的问题。

Express 4.0 不再内置 connect 中间件

这是影响比较大的一个修改,原先的各种 connect 中间件都需要单独 require 再使用。以下是修改前后的中间件对应关系:


express.favicon        === require('static-favicon')express.logger         === require('morgan')express.json           === require('body-parser').jsonexpress.urlencoded     === require('body-parser').urlencodedexpress.methodOverride === require('method-override')express.static         === require('serve-static')

看起来复杂,实际上只要做个字符串替换就成了。完整列表参考 connect 中间件列表

不再需要 app.use(app.router)

影响第二大的更新,express 3.x 中, app.get 方法插入中间件的执行时机是由 app.use(app.router) 的位置决定的,例如:


app.use(app.router);app.use(function (req, res, next) {	console.log('foo');	next();});app.get('/', function (req, res, next) {	console.log('bar');	res.send(200);});

上面代码在 express 3.x 中的 console 输出是:


barfoo

Express 4.0 不需要再显式引入 app.router ,因此上面代码删除掉第一行后,在 express 4.0 中的 console 输出是:


foobar

升级到 4.0 不仅仅是简单的删除 app.use(app.router) 就行了,一定要仔细检查代码会不会受到中间件执行顺序的影响。

删除了 app.configure

下面两段代码在 express 3.0 中的作用完全相同,express 推荐使用第二种写法,第一种写法在 4.0 中被取消了。


// 写法一app.configure('development', function () {	// ...});// 写法二if ('development' === app.get('env')) {	// ...}

删除了 express.createServer

直接用 express() 来代替 express.createServer()

其他

其余还有一些细节上的修改,例如移除了 res.on('header')res.charset ,将 res.headerSent 改为 res.headersSent 等等。可以查看详细的升级教程 Migrating from 3.x to 4.x

参考文献:

- FIN -

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Node.js Express WEB框架
用node和express连接mysql实现登录注册的实现代码
ABAP,Java, nodejs和go语言的web server编程
Node.js的框架-express
Node组件——Express简介
Node.js开发Web后台服务
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服