Как передать содержимое из шаблона в макет в Express?

У меня есть базовый сервер Express:

// server.js:
var Express = require('express');
app = Express.createServer();
app.configure(function(){
  app.set('views', Path.join(__dirname, 'views'));
  app.set('view engine', 'jade');
  app.set('view options');
});
app.get('/', function (request, response) {
  response.render('welcome', {
    locals: {some: 'Locals'}
  });
});

С базовый макет нефрита:

// views/layout.jade:
!!! 5
html(lang='en')
  head
    title= pageTitle
  body
    h1= pageTitle
    aside(id="sidebar")= sidebarContent
    #content
      #{body}

И простая страница:

# views/welcome.jade:
// How do I pass pageTitle and sidebarContent out to the layout from here?
p
  Welcome to my fine site!

(В Rails это может быть что-то вроде content_for или простая переменная экземпляра.)

11
задан James A. Rosen 30 August 2010 в 15:28
поделиться

2 ответа

Передайте его местным жителям: {некоторые: 'Местные жители', pageTitle: 'Добро пожаловать!'}

0
ответ дан 3 December 2019 в 03:34
поделиться

Express не имеет предвзятого понятия о «блоках» или как там это называется в rails, но вы можете использовать комбинацию helpers() и dynamicHelpers() для достижения чего-то подобного http://expressjs. com/guide.html#app-helpers-obj-

Передаваемые локальные значения доступны как для макета, так и для просмотра страницы

5
ответ дан 3 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

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