RT
设置了 app.locals
之后,每次执行 res.render()
时,都会默认加上app.locals
里面的数据
看官网文档差不多就是这个样子
app.configure(function() {
app.use(express.csrf());
//原来的dynamicHelpers
app.use(function(req, res, next) {
res.locals.csrf = req.session ? req.session._csrf : '';
next();
});
});
//原来的helpers
app.locals({ title: config.title });
use是中间件啦。
这个我猜测是因为之前的设计,概念太多,这次精简了。是一次进步。
@darklowly 就是用中间件代替
app.dynamicHelpers() (use middleware + res.locals)
这哥们儿到底想干嘛…
app.use(function(req, res, next){
//res.locals.title = config['title']
//res.locals.csrf = req.session ? req.session._csrf : '';
res.locals.req = req;
res.locals.session = req.session;
res.locals.error = req.error;
res.locals.success = req.success;
res.locals.docs = req.docs;
next();
});//locals
我已经定义了success,但是为什么页面还报success没有定义呢?
ReferenceError: c:\node\project\microblog\views\layout.ejs:42
40|
41| <div id="container" class="container">
42| <% if (success) { %> 43| <div class=“alert alert-success”> 44| <%= success %> 45| </div>
success is not defined
res.locals.success = req.success ? req.success : null;
话说我都不知道你写的是啥…
你的req.success什么时候填值的?如果是在某个route里面, 那肯定没有,因为是先执行你这个middleware(相当于java的filter),在执行你的action的.
谢谢大家! 就是想问res.locals是怎么用的,后来想来想去觉得他就像是个全局的变量。
res.locals 是某次请求的服务器回复里面的变量吧, res = response , locals名字都是本地变量集合的意思了
我正在找这方面的内容呢
请问ejs中怎样使用res.locals定义的变数?
发现了答案,使用locals.XXX就能取得res.locals.XXX= …中设定的值