#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 файл, но оба метода показывают эту ошибку