express3中删除了helpers,用locals了,但是怎么用呢,只是换了名字么?尝试无果。 - CNode技术社区

express3中删除了helpers,用locals了,但是怎么用呢,只是换了名字么?尝试无果。
发布于 13 年前 作者 kongkang 6790 次浏览 最后一次编辑是 9 年前

RT

14 回复

设置了 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= ...中设定的值

回到顶部

AltStyle によって変換されたページ (->オリジナル) /