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

Vue.js中如何给变量赋值HTML代码且避免被Vue解析报错

Vue3 setup中存储HTML字符串避免被解析的解决方法

报错原因

该报错本质是浏览器HTML解析规则导致的:浏览器解析<script>标签内容时,只要遇到字面量</script>字符串,无论它是否位于引号包裹的字符串内部,都会直接判定为当前<script>块的结束标记,进而导致后续代码解析异常,抛出VueCompilerError: Invalid end tag错误,和Vue本身的逻辑无关。

解决方案

  • 方法1:转义闭合标签的斜杠
    直接在</script>的斜杠前添加反斜杠转义即可,浏览器不会将转义后的内容识别为真实闭合标签:
    <script>
    imports...
    
    setup() {
      const a = a;
      const b = b;
      // 对斜杠进行转义
      const MyHTML = '<script><\/script>'
      // 模板字符串写法同理
      // const MyHTML = `<script><\/script>`
    }
    </script>
    
  • 方法2:拆分字符串拼接
    把</script>拆成多段字符串拼接,避免出现完整的</script>字面量即可:
    const MyHTML = '<script>' + '</' + 'script>'
    
  • 方法3:抽离到独立JS/TS文件
    如果需要存储的HTML内容较多,可将字符串定义抽离到单独的JS/TS文件中导出,再在Vue组件内导入使用。独立JS文件不会按HTML规则解析,不存在标签识别冲突问题。

补充说明

如果后续需要在模板中渲染这段HTML代码,使用Vue的v-html指令即可:

<template>
  <div v-html="MyHTML"></div>
</template>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:09:03