EJS 模板<%- 变量%> 与<%= 变量%>的区别
发布于 12 年前 作者 j4cnodejs 45722 次浏览 最后一次编辑是 8 年前

在 EJS (Embedded JavaScript) 模板系统中, 字符串输出时默认是经过escape转义编码的.

// 用=号输出,就会被escapge转义编码 
<%= VARIABLE_NAME %>

这种默认转义编码可能会带来麻烦, 比如我要输出一个 json 对象供客户端 javascirpt 使用, 或者想输出一些动态生成的 HTML 标签, 幸运的是EJS提供另一种输出方式:

// 用“-”输出原始内容, 不会被escape,
<%- VARIABLE_NAME %>
9 回复

咦? code 格式无效了?

markdown 格式不对。。

###早看到这点,我就不会多浪费很多时间了,妈呀

<h1>赞一个</h1>

underscore 的模块里, - 和 = 的作用刚好反过来。

javascirpt 这个错别字,好吧,我敏感了

说起这个问题,我用Jade的时候也遇到过,如果是输出html内容(比如markdown转换过来的),用 = var 模式输出会被转义,所有内容都会被一对<>包裹,用!= var 这种关闭转义能够正常输出

<%- VARIABLE_NAME %>这个变量里面如果含有<script></script>标签的话,页面就会挂掉…这个咋解决

回到顶部