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

VueJS无法渲染特定字符串求助(Laravel Blade环境)

这个问题我之前帮同事排查过,核心原因是你存储的字符串里包含了{{{}}}——这玩意儿会被Vue误判为它的插值表达式语法,加上Blade输出后转义的内容又触发了Vue的表达式解析逻辑,才报了这个错。给你几个实用的解决方案,按优先级排序:

解决方案

方法1:使用Vue的v-pre指令(最简单直接)

Vue的v-pre指令会跳过元素及其子元素的编译过程,这样里面的任何类似Vue插值语法的内容都会被原样显示,不会触发表达式解析错误。同时用Blade的转义输出确保字符串安全显示:

<div class="content" v-pre>
    {{ $project->description }}
</div>
  • 如果你希望存储的HTML实体(比如&gt;)被解析成对应的字符(>),就把{{ }}换成{!! !!}(注意:只有当你完全信任这个字符串的来源时才用,避免XSS风险):
<div class="content" v-pre>
    {!! $project->description !!}
</div>

方法2:通过数据属性+JavaScript设置文本

如果不想依赖Vue指令,也可以把字符串通过HTML数据属性传递,再用原生JS设置文本内容,彻底避免模板引擎的解析冲突:

<div class="content" data-description="{{ $project->description }}"></div>

<script>
document.addEventListener('DOMContentLoaded', () => {
    const contentElement = document.querySelector('.content');
    contentElement.textContent = contentElement.dataset.description;
});
</script>

这种方法的好处是完全绕开了Blade和Vue的模板解析,确保字符串100%原样输出。

方法3:结合Blade的@verbatim指令(针对Blade解析的额外保险)

如果你的字符串里的{{{}}}被Blade误解析了(虽然这种情况很少见),可以用@verbatim包裹内容,让Blade不处理里面的任何模板语法,再配合v-pre防止Vue解析:

<div class="content" v-pre>
    @verbatim
        {!! $project->description !!}
    @endverbatim
</div>

不过一般来说,方法1就足够解决问题了,因为报错的根源是Vue的表达式解析,不是Blade的。

内容的提问来源于stack exchange,提问作者Süha Boncukçu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:00:29