|
阅读:12080回复:1
ejs 变量,使用<%= %> 与<%- %> 在JS中输出变量的区别
朋友在一个项目中,遇到:javascript中使用EJS模板传递的变量时,变量不能进行正常的解析,会将引号转换成特殊的字符。
错误:使用<%= %> 这样的写法输出:变量值,且赋值给js的一个变量; 此值是一个对象,在转换时,出现了转换错误. 代码如下: EJS: var data=[{name:'张三'}, {name:'李四'},{name:'王五'}] ; req.render("xxx.html",{user:data }); javascript: 中 var data = <%=user%>; var obj = JSON.parse(data); //在转换时出现,错误.原因是data中有一些特殊符号 最后: 找到了原因,解决方案,只需要在Js代码中的。 var data = <%= user %> 改为 var data=<%- JSON.stringify(user) %> 即可; 只是,将输出变量的方式由<%= %> 改为<%-%>就好; 百度:ejs中<%= %> 改为<%-%>的区别: 在 EJS (Embedded JavaScript) 模板系统中, 字符串输出时默认是经过escape转义编码的. // 用=号输出,就会被escapge转义编码 <%= VARIABLE_NAME %> 这种默认转义编码可能会带来麻烦, 比如我要输出一个 json 对象供客户端 javascirpt 使用, 或者想输出一些动态生成的 HTML 标签, 幸运的是EJS提供另一种输出方式: // 用“-”输出原始内容, 不会被escape, <%- VARIABLE_NAME %> 文章参考自:http://cnodejs.org/topic/505bcced417be95272064f9e [doubleyong于2016-08-29 12:57编辑了帖子]
|
|
最新喜欢:
|
|
沙发#
发布于:2020-04-28 20:09
补充说明:直接在js文件中写ejs代码是不行的,会报错. 不过在页面中的js里写ejs代码是可以的.
var data=<%- JSON.stringify(user) %> data输出就是对象,可以直接使用 |
|
|