ejs 模板引擎上下文中转义和未转义值的含义?

sus*_*tel 2 javascript ejs node.js

<%= 将值输出到模板中(HTML 转义) <%- 将未转义的值输出到模板中

这两行具体意味着“转义”和“未转义”一词是什么意思?

dim*_*nes 7

让我向您展示一个简单的例子。

假设您的数据库中存储有数据,并且想要在视图 ejs 页面中呈现它。例子:

x = "<p>This is a paragraph</p>"
Run Code Online (Sandbox Code Playgroud)

现在将这些行添加到您的 ejs 页面中

<%= x %>
<%- x %>
Run Code Online (Sandbox Code Playgroud)

你将会看到这个

<p>This is a paragraph</p> 
This is a paragraph
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,<%=标签转义了 html 标签,并且不允许它们被翻译。
标签的情况则相反<%-,其中 html 被翻译(未转义),您会看到您想要的结果。

<%=出于安全原因,标签会转义该代码。如果您想使用<%-标签,您必须确定存储在数据库中的数据并希望稍后呈现它们。

想想这个数据

x = "<script>alert('You are in danger!')</script>"
Run Code Online (Sandbox Code Playgroud)

并尝试以这种方式渲染它

<%- x %>
Run Code Online (Sandbox Code Playgroud)

你猜怎么了!您将看到一条不错的警报消息,通知您如果您不确定自己的数据,则您将处于危险之中。

希望我对你有帮助。