首页 > 解决方案 > ejs模板引擎上下文中转义和非转义值的含义?

问题描述

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

这两行的具体含义是什么“转义”和“未转义”词?

标签: javascriptnode.jsejs

解决方案


让我给你看一个简单的例子。

假设您将数据存储在数据库中,并希望在视图 ejs 页面中呈现它。例子:

x = "<p>This is a paragraph</p>"

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

<%= x %>
<%- x %>

你会看到这个

<p>This is a paragraph</p> 
This is a paragraph

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

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

想想这个数据

x = "<script>alert('You are in danger!')</script>"

并尝试以这种方式渲染它

<%- x %>

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

希望我对你有所帮助。


推荐阅读