Express2.X迁移至3.X注意事项

这些是我在迁移中遇到的一些问题和解决办法,其实这里有一个更详细的。

如果你有迁移时遇到的问题,可以在下面留言,我再补充这个文章。

应用程序初始化

这个是比较大,以前的代码是

var app = express.createServer()
app.listen(8080);

现在改为

var app = express();
require('http').createServer(app).listen(8080);

详见:app.listen

模板

2.0的模板调用方法和3.0有很大区别,所以之前的

app.register(".html", require("jqtpl").express);

这样的使用方法是不能用了

3.0的文档里推荐了使用一个小模块consolidate.js来处理。

var engines = require('consolidate');
app.engine('html', engines.jqtpl);

同时由于去掉了res里的layout属性,你的网站可能显示不正常了,如果你需要支持layout,需要使用express-partials

PS:推荐你直接使用jade吧,用jade的extend、block和include在模板里控制模板自己的继承和包含会感觉更爽。

错误处理

2.x的时候使用的形式是

app.error = function(fn){
  this.use(function(err, req, res, next){
    fn.apply(this, arguments);
  });
};

现在是完全中间件形式,只是多一个参数,你也可以看看这里

app.use(function(err, req, res, next){
  res.send(500, { error: 'something error!' });
})

模板附加量

用处比较多,比如在所有的模板上加上用户信息

app.dynamicHelpers({
    user : function(){
        var user = getUser();
        return user;
    }   
})

现在必须使用中间件配合app.locals来使用

app.use(function(res, req, next){
    app.locals.user = getUser();
    next()
})

或者

app.use(function(res, req, next){
    app.locals({
        user : getUser()
    });
    next()
})  

转自:

http://jser.me/2012/12/10/Express2.X%E8%BF%81%E7%A7%BB%E8%87%B33.X%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.html

转载于:https://www.cnblogs.com/lingbaozhangqian/p/3599566.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值