Печать необработанных html-строк в EJS

#node.js #express

#node.js #экспресс

Вопрос:

Я использую express.js с помощью шаблонов EJS и я пытаюсь сделать что-то вроде этого:

 <%= "<a href='#'>Test</a>" %>
  

но он печатает это:

 amp;<a href='#'amp;>Testamp;</aamp;>
  

как я могу печатать «безопасные для html» строки?

Ответ №1:

Вы должны использовать html-код везде и использовать теги EJS только там, где вам нужны динамические данные. Пример:

 <a href='<%= user.id %>'><%= user.name %</a>
  

Чтобы конкретно ответить на ваш вопрос, вы можете использовать <%- "<tags_here>" %> для вывода неэкранированных HTML-данных.

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

1. проблема в том, что когда я делаю это: <%= partial(‘my_link’) %>, он тоже печатается таким образом

2. Ах, если вы хотите, чтобы html не экранировался, вы должны сделать это <%- partial(‘my_link’) %>

3. Нет проблем, для получения дополнительной информации о EJS проверьте репозиторий github: github.com/visionmedia/ejs

4. Вы все еще могли бы ответить на вопрос. Что, если другие придут посмотреть на этот вопрос, ожидая узнать, как печатать неэкранированные материалы?

5. есть ли что-то похожее на echo из php, что позволяет печатать данные из <% %> инструкции?

Ответ №2:

для необработанного выходного html в ejs вы можете использовать этот код

 <%- "<a href='#'>Test</a>" %>
  

Ответ №3:

Это доступные параметры в соответствии с документами

  1. тег <% ‘Scriptlet’ для потока управления, без вывода
  2. <%_ Тег скриптлета ‘Пропускает пробелы’, удаляет все пробелы перед ним
  3. <%= Выводит значение в шаблон (экранированный HTML)
  4. <% — Выводит неэкранированное значение в шаблон
  5. <%# Тег комментария, не выполняется, не выводится
  6. <%% Выводит литерал ‘<%’
  7. %> Обычный конечный тег
  8. -Тег%> Trim-mode (‘переключение новой строки’), обрезает следующую новую строку
  9. _%> Завершающий тег ‘пропускает пробелы’, удаляет все пробелы после него

Похоже, что вам нужен параметр с номером 4