0

Возможно ли создать функцию где-нибудь, которая может быть вызвана из любого представления в моем экспресс-приложении js mvc? Как объявить такую ​​функцию в промежуточном программном обеспечении для доступа непосредственно из представления?Как объявить функцию, которая может быть вызвана из любого представления в express js?

Так что я могу назвать эту функцию, как:

<%= getVar('my_name') %> // calling from the view 

и осуществлять обратную логику переменной где функция объявлена. Эта функция может использовать объекты запроса и ответа.

Примечание: «my_name» может быть любым, что не может быть назначено контроллером.

+0

Предположим, что эта функция w ill возвратить значение, если оно существует в сеансе, и оно вернет значение по умолчанию, если оно не существует – sith

ответ

1

Вы можете добавить функции к app.locals или res.locals так же, как вы бы добавили в него переменные. Если вы хотите иметь доступ к запросу и ответам (что, честно говоря, я чувствую, что немного впадает в то, что должны делать ваши контроллеры), вы можете создать промежуточное программное обеспечение и передать его.

От того, что вы сказали в ваш комментарий, это на самом деле лучше просто установить переменный, что вид можно использовать, например:

app.use((req, res, next) => { 
    res.locals.value = req.session.value || 'default value'; 
    next(); 
}); 

, если вам действительно нужна функция, чтобы можно было использовать в целях, вы можете установить его таким же образом, и обязывать запрос и ответ на функцию, если необходимо:

function getVar(req, res, anotherArg) { 
    // do whatever 
} 

app.use((req, res, next) => { 
    res.locals.getVar= getVar.bind(null, req, res); 
    next(); 
});