Подтвердить что ты не робот

Вспомогательные функции Nodejs EJS?

Есть ли способ зарегистрировать вспомогательные функции для шаблонов EJS, чтобы их можно было вызывать из любого шаблона EJS? Таким образом, он должен работать примерно так.

app.js

ejs.helpers.sayHi = function(name) {
    return 'Hello ' + name;
});

index.ejs

<%= sayHi('Bob') %>
4b9b3361

Ответ 1

Да, в Express 3 вы можете добавить помощников в app.locals. Пример:

app.locals.somevar = "hello world";

app.locals.someHelper = function(name) {
  return ("hello " + name);
}

Они будут доступны в ваших представлениях следующим образом:

<% somevar %>

<% someHelper('world') %>

Примечание. Экспресс 2.5 сделал помощники по-разному.

Ответ 2

У меня есть другое решение для этого, и я думаю, что он имеет некоторые преимущества:

  • Не изменяйте фильтры экспорта кода.
  • Доступ к любому методу без необходимости экспортировать их все.
  • Лучшее использование ejs (нет | труб).

На вашем контроллере:

exports.index = function(req, res) {
// send your function to ejs
    res.render('index', { sayHi: sayHi });
}

function sayHi(name) {
    return 'Hello ' + name;
};

Теперь вы можете использовать функцию sayHi внутри своего ejs:

<html>
    <h1><%= sayHi('Nice Monkey!') %></h1>
</html>

Вы можете использовать этот метод для отправки модулей в ejs, например, вы можете отправить модуль "момент" для форматирования или анализа дат.

Ответ 3

Вот пример фильтра... Я не знаком с помощниками.

var ejs = require('ejs');

ejs.filters.pluralize = function(num, str){
    return num == 1 ? str : str+'s';
};


 <%=: items.length | pluralize:'Item' %>

Произведет "Item", если он 1, или если 0 или > 1, создает "Элементы"

app.js

ejs.filters.sayHi = function(name) {
    return 'Hello ' + name;
});

index.ejs

<%=: 'Bob' |  sayHi %>

Ответ 4

Я использую:

В помощниках /helper.js

var func = {
    sayhi: function(name) {
        return "Hello " + name;
    }, 
    foo: function(date) {
        //do somethings
    }    
};
module.exports = func;

В маршрутизаторе:

router.get('/', function(req, res, next) {
    res.render('home/index', {
        helper: require('../helpers/helper'),
        title: 'Express'
    });
});

В шаблоне:

<%= helper.sayhi("Dung Vu") %>

Гудлак