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

在AlpineJS中使用Liquid对象出现语法错误,如何解决?

解决AlpineJS中嵌入Liquid对象的语法错误问题

问题原因

直接在x-data的JS对象中嵌入Liquid的{{product | json}}输出时,JSON字符串里的特殊字符(未转义引号、换行等)或Liquid输出的格式问题,会破坏JS对象的语法结构,从而抛出Unexpected token ';'错误。

可行解决方案

方案1:用JSON.parse配合转义过滤器

把Liquid输出的JSON字符串转义后,通过JSON.parse解析成JS对象,避免语法冲突:

<div class="product__info-wrapper" x-data="{smth: true, productItem: JSON.parse('{{ product | json | escape }}')}"></div>

这里的escape过滤器会转义JSON中的单引号,确保外层单引号不会被提前闭合,保证解析正常。

方案2:先挂载为全局变量

在页面头部先把产品数据输出为全局JS变量,再在Alpine中直接引用:

<!-- 页面头部输出全局变量 -->
<script>
  window.productData = {{ product | json }};
</script>

<!-- Alpine组件中引用 -->
<div class="product__info-wrapper" x-data="{smth: true, productItem: window.productData}"></div>

这种方式更简洁,也避免了模板中复杂的字符串转义问题,适合数据结构复杂的场景。

额外检查

  • 确认Liquid的json过滤器输出合法JSON:在浏览器开发者工具中查看页面源码,检查{{product | json}}的输出是否符合JSON规范(比如键名用双引号、字符串正确转义)。
  • 确认Laravel Mix的Alpine配置正确:入口JS文件中需正确初始化Alpine,示例代码:
    import Alpine from 'alpinejs';
    window.Alpine = Alpine;
    Alpine.start();
    

内容的提问来源于stack exchange,提问作者tearswep

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:11:07