以下这两种将元素传递给前台的方式有什么区别吗?我试验了效果一样
app.get('/', function(req,res){
res.locals.test="test";//???
res.render('index',{
title:'主页',
user: req.session.user,
posts:posts,
success:req.flash('success').toString()
});
});
app.get('/', function(req,res){
res.render('index',{
title:'主页',
user: req.session.user,
posts:posts,
test:"testData",//???
success:req.flash('success').toString()
});
});
都能在ejs通过<%=locals.testData%>或<%=test%>获取数据,那上面的两种写法有什么区别吗?
在微博的那个示例中,直接将res.locals写在了app.js中,那这个locals是针对哪个请求呢呢?难道是全局请求?那岂不是和app.locals一样了?
app.use(function(req,res,next){
var err = req.flash('error'),
success = req.flash('success');
res.locals.user = req.session.user;
res.locals.error = err.length ? err : null;
res.locals.success = success.length ? success : null;
next();
});
求指点
6 回复
前辈我查了下文档,关于app.use app.use([path], function) Use the given middleware function, with optional mount path, defaulting to "/".
是不是说写在app.use中的res.locals数据只能在请求路径"/"对应的render页面中进行访问呢?
不只是 在“/” 所有地址都有效,app.locals,你是哪里看到的? 一般来说,设置整站的全局变量都这样设置 res.locals.current_user = req.session.user;
我google时上面说2.x->3.x的过程中app.helpers()和app.dynamicHelpers()已经被替换成了app.locals和res.locals,而且app.helpers我也试验过了 确实是全局的
http://cnodejs.org/topic/4f72d6478a04d82a3d2f2d51 这为小哥的这个帖子和我第一个帖子一样 如果没错的话我就先这么理解就好了
但是第二个还是没有明白=。=