2012-03-13 2 views
0

Я изучаю node.js с express и ejs шаблон. Пока я изучаю некоторый код, я обнаружил, что он может вызвать config в шаблоне без отправки его в качестве переменной при рендеринге.Почему шаблон EXPRESS + EJS может ВЫЗОВИТЬ CONFIG без отправки его при рендеринге?

here крошечный крошечный проект как программа "TODO",

в его views/layout.html, я нашел

<title><%= config.site_name %></title> 

Но в controllers/todo.js

Я вижу

var config = require('../config'); 
... 
res.render('index', {todos: rows}); 

явно не отправьте config на номер ejs, хотя todo.js требуется config.

так почему рендеринг ejs может вызвать config при рендеринге?

ТИА

ответ

1

Он использует app.helpers, который предоставляет данные для просмотра.

Пример:

app.helpers({foo: "bar"}); 

эквивалентно делать:

res.render("index", {foo: "bar"}); 

В каждом вызове render.

Edit: Существует также app.dynamicHelpers, что позволяет использовать материал на req и res, а также:

app.dynamicHelpers({ 
    foo: function(req, res) { 
    return req.session.foo; 
    } 
}); 

Я рекомендую для чтения-через из the Express guide, это довольно короткий и дает обзор что доступно в Express.

Смежные вопросы