导航栏因为要复用到每个页面是不是要存到locals里面
如何做好
app.route('/')
.get(function(req,res,next){
CategoryController.list(function (err, categories){
if (err) {
categories = [];
}
res.locals.cateList=categories;
var renderData={
title:"xxx"
}
res.render('index',renderData);
});
})
这样做好像不可以把categories存到locals里面,还是只有首页才有,如何做才好?
还是要传到app.js里面的app.use和user放在一起?
app.use(function(req, res, next){
res.locals.user = req.session.user;
next();
});
或者做导航栏还是有别的办法比较好
用模版引擎了吗 比如ejs 然后把菜单导航存一个partial片断里
Express的默认模板是Jade(Pug),一般来讲,你Render的页面(如
index.jade
),都是在extends了(layout.jade
)页面模板。以《Getting MEAN》书中的例子为例:
layout.jade
中可以类似:你可以把你的导航栏写到layout.jade中,然后,在index.jade中extends layout如:
那么,在JS文件中,你可以传入参数:
至于这个
categories
在layout.jade
中如何渲染,那就是你的事情了。不过这样你就不用使用
locals
了。再说了,你在Controller
中,也可以访问req.session.*
啊,没必要用在app.use(xxxxx)
中的。欢迎交流。