如何在EJS中实现Node.js数组到客户端JavaScript的无特殊字符传递
正确实现方案
直接将序列化后的JSON内容赋值给变量即可,不需要额外加引号包裹,也不需要调用JSON.parse:
// EJS 代码 <script> const data = <%- JSON.stringify(locals.data || []) %> </script>
原理说明
- JSON 序列化后的输出本身就是合法的 JavaScript 字面量,所有特殊字符(单引号、双引号、反引号、转义字符等)都会被
JSON.stringify自动处理,无需额外包裹任何字符,完全不会出现符号冲突的问题,同时赋值后直接就是原生数组类型,不需要额外做类型转换。 - 这里必须使用
<%- %>输出,避免EJS对内容做HTML转义导致格式错误。 - 将默认值
|| []放在JSON.stringify的参数内,避免locals.data为假值时输出undefined引发语法错误。
边界场景验证
即使数组内容包含任意特殊字符,比如["He'llo", 'wor"ld', ba``ck, "\n换行"],该方案都可以正常运行,不会出现报错。
内容的提问来源于stack exchange,提问作者hi12167pies
相关产品推荐
相关产品推荐

