С Marko вы обычно хотите bypass the Express view engine и сделать шаблон непосредственно на записываемый res
потока:
var template = require('./template.marko');
app.use(function(req, res){
var templateData = { ... };
template.render(templateData, res);
});
С таким подходом вы имеете полный контроль над тем, что данные передаются в шаблон. Технически, у вас есть доступ к res.locals
в шаблоне, выполнив следующие действия:
<div if="out.stream.locals.isAuthenticated">
ПРИМЕЧАНИЕ: out.stream
просто ссылка на записываемый поток, который записывается на (в данном случае, res
)
You есть другие варианты:
Использование res.locals
в качестве данных шаблона
var template = require('./template.marko');
app.use(function(req, res){
var templateData = res.locals;
template.render(templateData, res);
});
шаблон Построить данные res.locals
var template = require('./template.marko');
app.use(function(req, res){
var templateData = {
isAuthenticated: res.locals.isAuthenticated
};
template.render(templateData, res);
});
Марко также поддерживает "глобальные" данные, которые доступны с помощью out.global
. См .: http://markojs.com/docs/marko/language-guide/#global-properties
Если у вас есть вопросы, пожалуйста, поделитесь!
Спасибо @Patrick Steele-Idem, единственное, что мне пришлось сделать, помимо кода, который я написал на моем посту, было проверить переменную с помощью 'if =" out.stream.locals.isAuthenticated ", как вы сказали. Больше ничего! Таким образом, мне не нужно передавать переменную непосредственно в шаблон, как другие примеры, которые вы предложили. Как насчет 'app.locals'? Как я могу связаться с ними? – crash
Эй, @crash, экземпляр 'app' зависает от' res' и 'req' как' res.app' и 'req.app', соответственно, поэтому вы можете получить доступ к' app.locals' как 'out.stream. app.locals'. –
Для таких людей, как я, которые пришли сюда и нашли мертвую ссылку: , мы можем получить доступ к req, res, app, app.locals и res.locals автоматически out.global в любом представлении, используя res.marko вместо template.render с экспресс. См. Https://markojs.com/docs/express/#usage – ElJackiste