Как вызвать функцию внутри литерала шаблона в node js

#javascript #node.js #express #ejs #template-literals

#javascript #node.js #выразить #ejs #литералы шаблонов

Вопрос:

Я использую node js, express. Я пытаюсь вызвать функцию в литерале шаблона. Я создал модуль и импортировал его в основной файл, а затем добавил функцию в app.locals и получил доступ к моим представлениям, которые отлично работают. Но когда я пытаюсь использовать его в литералах шаблона, а также в моем общедоступном файле, он выдает ошибку «currencyToWords не определен«.

Я думаю, что в общедоступном файле это имеет смысл, потому что я делаю общедоступную папку статической. но, на мой взгляд, это странно, потому что, когда я использую его в html, он работает, но когда я использую его в литерале шаблона, он выдает ошибку.

Я хочу использовать функцию currencyToWords в литералах шаблона, чтобы изменить ответ.
У меня есть одно решение, которое я могу создать файл в общедоступной папке и добавить функцию в script в этот файл и импортировать в нижний колонтитул, но я не хочу этого делать.
Кто-нибудь может помочь мне в решении проблемы.

Модуль структуры моего приложения
структура приложения.exports = { CurrencyConverter }

В app.js app.js это мой основной файл, в котором я создаю сервер

 var { currencyToWords } = require('./config/functions');
app.locals.currencyToWords = currencyToWords;
  

добавив в locals, я могу получить к нему доступ в своем приложении в любом месте

Этот код работает:

  <div class="fix pull_right">
  <h3><%= currencyToWords(property.propertyDetails.price)%></h3>
 </div>
  

Это не работает

 var a =`
  <p>${currencyToWords(property.propertyDetails.price)}</p>
`;
  

приведенный выше код такой же, но разница лишь в том, что первый используется в тегах ejs, а второй — в литералах ejs и шаблонов.

Вот документация от express о app.locals app.locals Объект app.locals имеет свойства, которые являются локальными переменными в приложении.

 console.dir(app.locals.title)
// => 'My App'

console.dir(app.locals.email)
// => 'me@myapp.com'
  

После установки значение свойств app.locals сохраняется на протяжении всего срока службы приложения, в отличие от свойств res.locals, которые действительны только в течение срока службы запроса.

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

 app.locals.title = 'My App'
app.locals.strftime = require('strftime')
app.locals.email = 'me@myapp.com'
  

Комментарии:

1. Я так понимаю, вы отправляете currencyToWords функцию с сервера в представление? Или это просто обычная JS-функция на стороне клиента?

2. Я попытался отправить функцию currencyToWords с сервера для просмотра при рендеринге view, а также импортировать ее из отдельного util.js файл, но оба метода показывают эту ошибку