我应该还是不应该在vue3中挂载body元素?

bq9c1y66  于 2023-10-23  发布在  Vue.js
关注(0)|答案(1)|浏览(221)

从vue3开始,应用根挂载元素不再被替换,而是挂载点的innerHTML。
这使得挂载body元素成为可能(就像很多人之前在vue2上尝试过的那样)。
但是我应该还是不应该把body作为根元素挂载呢?
有什么好的和不好的想法吗?
我找不到问题的答案,我不是一个前端开发人员有任何经验。但现在我使用vue3,我想知道,如果它给我在未来的任何麻烦这样做。

5gfr0r5j

5gfr0r5j1#

Vue在发生更改时实时更新DOM。这意味着它删除了已经存在的HTML元素。
下面是一个Vue3应用程序。注意,当应用程序运行时,<div class="random"></div>不再位于DOM中。

let app = {
  data() {
    return {
      message: 'Vue3!'
    }
  },
  template: `
    <h1>{{ message }}</h1>
    <p>Vue3 works on the body</p>
  `
}

// Mounting the app to the body element directly.
Vue.createApp(app).mount('body')
* { margin: 0; padding: 0; }

body { padding: 5px; color: #efefef; background: #440022; }

.random { padding: 5px; background: #006600; width: 200px; height: 30px; }
<html>
  <body id="app">
    <div class="random">What happens to existing HTML?</div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.global.min.js"></script>
  </body>
</html>

相关问题