Значение экранированного и неэкранированного значения в контексте механизма шаблонов ejs?

#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 %>
  

Угадайте, что! Вы увидите приятное предупреждающее сообщение, информирующее вас о том, что если вы не уверены в своих данных, вы в опасности.

Надеюсь, я вам помог.