Отображать переменную как HTML в EJS

Я использую библиотеку форм для Node.js ( Forms ), которая будет отображать для меня форму на бэкэнде:

var signup_form = forms.create({ username: fields.string({required: true}) , password: fields.password({required: true}) , confirm: fields.password({ required: true , validators: [validators.matchField('password')] }) , email: fields.email() }); var signup_form_as_html = signup_form.toHTML(); 

Последняя строка var signup_var signup_form_as_html = signup_form.toHTML(); создает блок HTML, который выглядит следующим образом:

 

В основном просто длинная строка HTML. Затем я пытаюсь сделать это с помощью EJS и Express, используя следующий код:

 res.render('signup.ejs', { session: loginStatus(req) , form: signup_form_as_html }); 

Но при рендеринге HTML это просто строка, которую я разместил выше, а не фактический HTML (и, следовательно, форма, которую я хочу). Есть ли способ сделать эту строку рендерингом как фактический HTML с помощью EJS? Или я буду использовать что-то вроде Джейд?

С ejs вы можете иметь

 <% code %> 

… который является кодом, который оценивается, но не распечатывается.

 <%= code %> 

… который является кодом, который оценивается и распечатывается (экранируется).

 <%- code %> 

… который является кодом, который оценивается и распечатывается (не экранируется).

Поскольку вы хотите напечатать свою переменную и НЕ ее избежать, ваш код будет последним типом (с -<% ). В твоем случае:

 <%- my_form_content %> 

Более подробно см. Полную документацию ejs

Обновление октября 2017 года

Здесь происходит новая разработка ejs (v2, v2.5.7): https://github.com/mde/ejs Старый ejs (v0.5.x, 0.8.5, v1.0.0) доступен здесь https: / /github.com/tj/ejs

Теперь с ejs вы можете сделать еще больше. Вы можете использовать:

  • Выпущенный выход с помощью <%= %> (конфигурация функции эвакуации)
  • Необработанный исходный вывод с <%- %>
  • Режим «Новая линия» («переполнение новой строки») с -%> конечным тегом
  • Режим обрезания пробелов (slurp all whitespace) для streamа управления с помощью <%_ _%>
  • Управляющий stream с <% %>

Итак, в вашем случае это будет <%- variable %> где variable – это что-то вроде

 var variable = "text here 
and some more text here";

Я надеюсь, что это помогает кому-то. 🙂

У меня была такая же проблема с рендерингом ввода textarea из редактора wysiwyg, сохраненного как html в моей базе данных. Браузер не отобразит его, а отобразит html как текст. После нескольких часов поиска я узнал

<%= data %> экранированные данные во время

<%- data %> left data ‘raw’ (unescaped), и браузер теперь может его отобразить.

  • Обновление вложенного массива внутри массива mongodb
  • Как подключиться к Postgres через Node.js
  • Запись файлов в Node.js
  • Вложенный запрос Mongoose в Model по полю его ссылочной модели
  • Перенаправить все конечные косые черты глобально в express
  • Как сделать сервер webpack dev запущенным на порту 80 и 0.0.0.0, чтобы сделать его общедоступным?
  • HTML в PDF с Node.js
  • разгрузка кода / модhive
  • Основной статический файловый сервер в NodeJS
  • Mongoose Уникальный индекс не работает!
  • Express.js req.ip возвращает :: ffff: 127.0.0.1
  • Interesting Posts

    Как проверить нули в глубоком lambda-выражении?

    Какая версия моего оборудования MacBook?

    Chrome – org.openqa.selenium.WebDriverException: неизвестная ошибка: не удается получить расширение автоматизации в driver.manage (). Window (). Maximize ();

    Могу ли я настроить Thunderbird 3 для обновления списка папок для учетной записи Exchange IMAP?

    Html.Textbox VS Html.TextboxFor

    Как преобразование float / double в int обрабатывается в printf?

    как блокировать виртуальную клавиатуру при нажатии на edittext в android?

    Воспроизведение аудиоклипа на текущем вызове

    Как наилучшим образом реализовать Equals для пользовательских типов?

    Использование намерений для передачи данных между действиями

    Ошибка обновления 10-летней версии Windows 0xc1900101 – 0x30018, ссылаясь на SYSPREP

    Oracle: как узнать, ожидает ли транзакция?

    Почему scanf должен принимать адрес оператора

    rxjava: Можно ли использовать функцию retry (), но с задержкой?

    Как заменить аудиовыход левого и правого динамиков?

    Давайте будем гением компьютера.