CNode

EJS 模板<%- 变量%> 与<%= 变量%>的区别

Jj4cnodejs发布于14 年前最后回复10 年前9 回复46528 浏览0 收藏

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

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

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

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

回复 (9)

A
a272121742#1·14 年前

J
joecora#2·13 年前

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

P
petersun#3·13 年前
A
alsotang#4·13 年前

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

Y
yaochun#5·12 年前

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

B
backsapce#6·12 年前

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

J
j4cnodejs#7·14 年前

咦? code 格式无效了?

F
fengmk2#8·14 年前
引用 j4cnodejs咦? code 格式无效了?

markdown 格式不对。。

F
flybears#9·12 年前

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

参与回复
登录后即可参与回复。登录