Доступ к запросу или сеансу Express.js из шаблона Jade

Мне интересно, есть ли простой способ получить доступ к переменным req или сеанса Express.js из шаблона Jade, не передавая их через обычный ответ.

Или это единственный способ ?

res.render('/', {
    session: req.session
});
27
задан MrBojangles 13 June 2011 в 14:28
поделиться

3 ответа

Просто добавьте

app.use(express.cookieParser());
app.use(express.session({secret: '1234567890QWERTY'}));
app.use(function(req,res,next){
    res.locals.session = req.session;
    next();
});

Перед

app.use(app.router);

и получите сеанс в нефрите

p #{session}
53
ответ дан 28 November 2019 в 04:02
поделиться

просто используйте промежуточное ПО.

app.use(function (req, res, next) {
            var origRender = res.render;
            res.render = function (view, locals, callback) {
                if ('function' == typeof locals) {
                    callback = locals;
                    locals = undefined;
                }
                if (!locals) {
                    locals = {};
                }
                locals.req = req;
                origRender.call(res, view, locals, callback);
            };
            next();
});

После чего вы можете использовать «# {req}» для ссылки на него в нефритовом шаблоне.

Предположим, у вас есть объект «пользователь» в «req», а «пользователь» имеет метод «isAnonymous», если ваш user.isAnonymous () возвращает true,

p #{req.user.isAnonymous()}

будет будет отображаться как:

<p>true</p>
3
ответ дан 28 November 2019 в 04:02
поделиться

В то время как в javascript всегда есть возможность выйти из области видимости и ползти вверх, я действительно действительно действительно действительно действительно сильно призываю вас найти другой путь.

Подумайте над тем, что вы спрашиваете: могу ли я узнать, что мой взгляд о кишках моего контроллера?

Предполагается, что представление берет данные и преобразует их в разметку. Вот и все. Если вы делаете что-то еще, вы делаете это неправильно. Мне все равно, насколько это "легко". В этом смысл интерфейса. Чтобы точно определить, что передается, и облегчить замену одной вещи на другую.

1
ответ дан 28 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: