当前位置:首页 > VUE

vue 实现挂载

2026-02-10 01:32:35VUE

Vue 实现挂载的核心方法

在 Vue 中,挂载是将 Vue 实例与 DOM 元素关联的过程,通常通过 mount 方法完成。以下是常见的实现方式:

使用 createAppmount

import { createApp } from 'vue';
const app = createApp({
  data() {
    return { message: 'Hello Vue!' };
  }
});
app.mount('#app'); // 挂载到 id 为 app 的 DOM 元素

手动挂载未编译模板

const vm = new Vue({
  template: '<div>{{ message }}</div>',
  data: { message: 'Hello!' }
}).$mount('#app'); // 等价于 el: '#app'

延迟挂载

const vm = new Vue({
  data: { message: 'Delayed mount' }
});
vm.$mount(); // 不传参数时返回实例
document.getElementById('app').appendChild(vm.$el);

挂载的生命周期

挂载过程会触发以下生命周期钩子:

  • beforeCreate:实例初始化后调用
  • created:实例创建完成
  • beforeMount:挂载开始前
  • mounted:挂载完成后调用

动态挂载场景

对于需要动态创建的组件:

import { createApp } from 'vue';
import DynamicComponent from './Dynamic.vue';

const mountComponent = (targetElement) => {
  const app = createApp(DynamicComponent);
  app.mount(targetElement);
  return app;
};

服务端渲染注意事项

SSR 环境下应避免使用客户端专用代码:

if (typeof window !== 'undefined') {
  app.mount('#app');
}

卸载实例

需要销毁实例时:

const app = createApp(App);
const vm = app.mount('#app');
// 卸载操作
app.unmount();

常见问题解决

挂载目标不存在 确保 DOM 已加载完成:

document.addEventListener('DOMContentLoaded', () => {
  app.mount('#app');
});

多次挂载警告 同一实例不应重复挂载,需先卸载旧实例。

组件未注册 全局或局部注册组件后再挂载:

vue 实现挂载

app.component('my-component', {...});

标签: vue
分享给朋友:

相关文章

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [...t…

vue实现文章锚点定位

vue实现文章锚点定位

实现文章锚点定位的方法 在Vue中实现文章锚点定位可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML锚点 通过HTML的id属性和<a>标签的href属性实现锚点跳转。在Vu…

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue 实现直播

vue 实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能,通常需要结合WebRTC、RTMP或HLS等技术。以下是几种常见的实现方式: 使用WebRTC实现实时直播 WebRTC适合低延迟的实时直播场景,…

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…