express v4.9.0 使用注意点

来源:互联网 发布:出售微信扫号软件 编辑:程序博客网 时间:2024/06/05 20:45

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();
});

这个方案还有些许问题!


0 0