express v4.9.0 使用注意点

1.路由问题

描述:在app.js中有多个路由设定时,除 "/"路径访问正常,其他访问出错!

解决前:

app.use('/', routes);
app.use('/users', users);
解决后:

app.use(routes);
app.use(users);


2.DELETE 方法的替代实现

描述: 对于DELETE和PUT这两种方法的支持要通过POST方法实现,而随着express版本的更新,有些模块需要手动添加,比如替代方案中要使用的method-override模块。

替代方案:

安装method-override模块,

在app.js中添加:

var methodOverride=require('method-override');

app.use(methodOverride('_method'));

在users.js路由设置中添加delete处理:

 router.delete('/users/:name',function(req,res,next){
 if(users[req.params.name]){
 delete users[req.params.name];
 res.redirect('/users');
 }else{
 console.log('test');
 next();
 }
 });

在profile.jade中设置相应的表单:

form(action="/users/"+encodeURIComponent(user.username)+"?_method=DELETE",method="POST")
    input(type="submit",value="Delete")

通过这些设置可以正常实现delete方法


3.session问题

描述:新版本移除了对dynamicHelper的支持

替代方案:

安装express-session和connect-flash模块,

在app.js中添加:

var flash=require('connect-flash');

var expressSession=require('express-session');
var session=require('./routes/session');


app.use(cookieParser('my secret string'));
app.use(expressSession({

    secret:'my secret string',
    resave:true,
    saveUninitialized:true,
        maxAge:3600000
}));
app.use(flash());

//局部变量
app.use(function(req,res,next){
    res.locals.error=req.flash('error').toString();
    res.locals.success=req.flash('success').toString();
    res.locals.user=req.session?req.session.user:null;
    next();
});

这个方案还有些许问题!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值