#javascript #node.js #ejs
#javascript #node.js #ejs
Вопрос:
<%= выводит значение в шаблон (экранированный HTML) <% — выводит неэкранированное значение в шаблон
Что конкретно означают эти 2 строки «экранированное» и «неэкранированное» слово?
Комментарии:
1. Когда вы экранируете некоторый HTML-код, он фактически преобразует его в безопасную строку HTML. Взгляните на это w3school.com.cn/jsref/jsref_escape.asp это должно помочь вам понять это. Смысл этого в основном в том, чтобы избежать кода, который может вызвать проблемы с безопасностью на вашей веб-странице
Ответ №1:
Позвольте мне показать вам простой пример.
Допустим, у вас есть данные, хранящиеся в вашей базе данных, и вы хотите отобразить их на странице просмотра ejs. Пример:
x = "<p>This is a paragraph</p>"
Теперь добавьте эти строки на свою страницу ejs
<%= x %>
<%- x %>
Вы увидите это
<p>This is a paragraph</p>
This is a paragraph
Как вы видите, <%=
tag экранирует теги html и не позволяет их переводить.
Обратное происходит с <%-
тегом, где html переводится (неэкранированный), и вы видите желаемый результат.
<%=
тег экранирует этот код по соображениям безопасности. Если вы хотите использовать <%-
tag, вы должны быть уверены в данных, которые вы храните в своей базе данных, и хотите позже отобразить их.
Подумайте об этих данных
x = "<script>alert('You are in danger!')</script>"
И попробуйте отобразить его таким образом
<%- x %>
Угадайте, что! Вы увидите приятное предупреждающее сообщение, информирующее вас о том, что если вы не уверены в своих данных, вы в опасности.
Надеюсь, я вам помог.