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

Vue.js HelloWorld在Bootstrap站点中嵌套元素时无法正常运行

解决Vue嵌套Bootstrap Container后无法运行的问题

我之前也碰到过类似的坑!咱们来一步步排查解决你的问题:

首先确认Vue的挂载方式和时机是否正确

这是最常见的原因——如果你的Vue代码在DOM元素加载完成前就执行了,或者用错了Vue版本的写法,就会出现“单独运行正常,嵌套就失效”的情况。

情况1:使用Vue 2

确保脚本放在DOM元素之后,或者用DOMContentLoaded监听DOM加载完成:

<div class="container">
  <div id="app">{{ message }}</div>
</div>

<script src="https://unpkg.com/vue@2"></script>
<script>
// 等DOM加载完再初始化Vue
document.addEventListener('DOMContentLoaded', function() {
  new Vue({
    el: '#app',
    data: {
      message: 'Hello Vue!'
    }
  })
})
</script>

情况2:使用Vue 3

Vue 3不再支持new Vue()的写法,必须用createApp,同样要保证DOM就绪:

<div class="container">
  <div id="app">{{ message }}</div>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
  const app = Vue.createApp({
    data() {
      return {
        message: 'Hello Vue!'
      }
    }
  })
  app.mount('#app')
})
</script>

检查Bootstrap与Vue的冲突

如果你引入了Bootstrap的JS依赖(比如Bootstrap 5的bundle或者旧版的jQuery),要注意初始化顺序:

  • 把Vue的初始化代码放在Bootstrap JS之后,避免Bootstrap的DOM操作干扰Vue的挂载。
  • 不要让jQuery等库修改Vue挂载的#app元素,比如不要用jQuery给#app加动态内容,会破坏Vue的响应式。

排查样式或DOM结构问题

有时候不是Vue没运行,而是你看不到结果:

  • 打开浏览器开发者工具,检查#app元素的计算样式,看有没有display: none、visibility: hidden或者opacity: 0这类隐藏属性。
  • 确保页面里只有一个id="app"的元素,Vue只会挂载第一个匹配的元素,重复id会导致异常。

完整可运行示例

这里给你一个嵌套在Bootstrap Container里的Vue 3完整示例,直接复制就能运行:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue + Bootstrap Container</title>
  <!-- 引入Bootstrap CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
  <div class="container mt-5">
    <div id="app" class="alert alert-primary">
      {{ message }}
    </div>
  </div>

  <!-- 引入Vue 3 -->
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  <!-- 引入Bootstrap JS(如果需要弹窗、下拉等交互组件) -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

  <script>
    document.addEventListener('DOMContentLoaded', () => {
      const app = Vue.createApp({
        data() {
          return {
            message: 'Hello Vue! 我在Bootstrap Container里正常工作啦🥳'
          }
        }
      })
      app.mount('#app')
    })
  </script>
</body>
</html>

按照上面的步骤排查,应该就能解决你的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:03:31