Как включить серверный script в шаблон Jade?

Я только что установил moment.js; теперь я хочу получить доступ к moment внутри моего шаблона Jade. Пример:

.main-content
    .container
        .access-details.clearfix
            .left
                div Logged in: <b>#{user.name}</b>
                div Access Lvl: #{user.accessLevel}
            .right
                div= moment().format("dddd, MMMM Do YYYY, h:mm:ss a")

Чтобы быть ясным, я хочу, чтобы дата была отформатирована на стороне сервера, а затем отправлена ​​клиенту как отображаемая строка.

Итак, как мне сделать библиотеку JavaScript доступной внутри шаблона Jade?


Я должен заметить, что я использую это с помощью Express:

var server = express.createServer();
server.configure(function () {
    server.set('view engine', 'jade');

Есть ли какие-то опции, которые мне нужно передать там, чтобы сказать, какие библиотеки включать?


Просто мне показалось, что это абсолютно не отличается от передачи в локальной переменной. например.

server.get('/', function (req, res) {
    res.render('index', {
        locals: {
            moment: require('moment')
        }
    });
});

Но я не хочу передавать это во все виды; если я когда-нибудь забуду, мое приложение сломается, поскольку оно используется в основном макете. Итак, как я могу убедиться, что он всегда доступен?

Ответы

Ответ 1

Помощники удаляются из Express 3 или 4.

Просьба использовать app.locals

app.locals.moment = require('moment');

Объект app.locals - это объект JavaScript. Добавленные к нему свойства будут отображаться как локальные переменные в приложении.

Таким образом, вы можете использовать app.locals в любых файлах просмотра, Jade или EJS;

moment().format('YYYY-MM-DD h:mm:ss');

Ответ 2

Этот ответ заставлял меня указывать в правильном направлении, хотя документация на dynamicHelpers, похоже, таинственно исчезла из документации Express.

Кроме того, мне не нужен динамический помощник, просто статический (без доступа к запросу/ответу). Поэтому я взял удар в темноте, как он будет называться:

server.helpers({
    moment: require('moment')
});

Работает как шарм! moment теперь доступен во всех моих представлениях.