You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:45:05