#javascript #html #node.js #express #ejs
#javascript #HTML #node.js #экспресс #ejs
Вопрос:
Я считаю, что это очень просто, но, похоже, не могу в этом разобраться.
У меня установлен редактор Quilljs в моем веб-приложении nodejs / express, и он хранит мое описание в базе данных mysql как <p><strong>This is the quill data. How are we doing dev?</strong></p>
.
Теперь моя страница ejs выглядит следующим образом :
<% data.forEach(function(d,index){ %>
<p> <%= d.description %> </p>
<% }) %>
но это, очевидно, отображает данные так, как они хранятся в базе данных (с p
strong
тегами и).
Что я пробовал:
- пробовал использовать
<pre>
так, чтобы форматирование оставалось неизменным (просто попробуйте новичок). - пробовал
.html()
и.load()
методы jquery для обновления данных в формате HTML, но безрезультатно.
Как я могу преобразовать это в html? чтобы форматированный текст печатал результирующий HTML-код, а не исходный код.
Ответ №1:
Используйте <%-
вместо <%=
<% data.forEach(function(d,index){ %>
<p> <%- d.description %> </p>
<% }) %>
Вы можете посмотреть about tags paragraph, чтобы узнать больше об использовании <%=
или <%-
в документах ejs
Примечание: Если вы это сделаете, будьте осторожны с проблемой XSS.
И вам понадобится sanitize-html, чтобы сохранить ваш HTML-код.
ПРАВКА1
Вам не нужно присваивать его новой переменной.
<% data.forEach(function(d,index){ %>
<% if (d.description.length > 75) { %>
<p> <%- d.description.substring(0, 75) %> </p>
<% } else { %>
<p> <%- d.description %> </p>
<% }%>
<% }) %>
Комментарии:
1. Это работает! Спасибо. Могу ли я использовать
<%-
теги in scriptlet? что-то вроде этого:<% <%- d.description %> %>
? Какова альтернатива?2. почему вы хотите это сделать?
3. Я хочу ограничить описание, скажем, 75 буквами. Поэтому я хочу выполнить некоторые операции js над текстом в формате html, например :
<% var theDesc = <%- d.description %>; var newStr; if(theDesc.length >75) { newStr = theDesc.substring(0,75); } else newStr = theDesc; %>
. Возможно ли это?4. очевидно, что если я удалю описание
<%- %>
вокруг d.в приведенном выше коде, это сработает. Но затем он отображает переменную следующимamp;>pamp;< Some text amp;>/pamp;<
образом . Это все, что я пытаюсь сделать.5. Огромное спасибо за это, приятель. Я довольно новичок в создании шаблонов с помощью NodeJS. И следовало бы поискать это в документе. Еще раз спасибо за ваше время.
Ответ №2:
НЕ СОХРАНЯЙТЕ HTML-КОД.
Это может доставить вам много проблем. Попробуйте создать какую-нибудь произвольную структуру данных, например json, и распечатать ее с помощью вашего EJS.
Комментарии:
1. Как я уже сказал, сэр, я использую quiil editor, и он дает мне эти HTML-теги, чтобы сохранить стиль / форматирование без изменений. Не могли бы вы, пожалуйста, показать мне некоторые методы или связать меня с соответствующими статьями / документами / блогами / чем-нибудь, чтобы достичь того, что вы говорите? Это было бы очень кстати. Спасибо.
2. Вы можете сохранить формат, используя некоторый AST (абстрактное синтаксическое дерево).