Vue 根实例初始化代码
这段代码是 Vue.js 应用的 根实例初始化代码,用于启动整个 Vue 应用。以下是详细解析:
1. 代码结构
new Vue({
el: '#app', // 挂载目标
router, // 路由实例
store, // Vuex 状态管理实例
render: (h) => h(App) // 渲染函数
});
2. 核心配置解析
(1)el: '#app'
- 作用:指定 Vue 实例挂载到 DOM 中 ID 为
app
的元素上。 对应 HTML:
<div id="app"></div>
(2)router
- 作用:注入 Vue Router 实例,启用路由功能。
前提:需先创建路由实例,例如:
import router from './router'; // 假设路由配置已定义
(3)store
- 作用:注入 Vuex 实例,启用全局状态管理。
前提:需先创建 Vuex store,例如:
import store from './store'; // 假设 Store 已定义
(4)render: (h) => h(App)
作用:定义根组件的渲染逻辑。
h
是createElement
的别名,用于创建虚拟 DOM。h(App)
表示渲染App.vue
根组件。
等价写法(若不用 render 函数):
template: '<App/>', components: { App }
3. 完整启动流程
HTML 入口:
<body> <div id="app"></div> <!-- Vue 挂载点 --> <script src="app.js"></script> <!-- 打包后的入口文件 --> </body>
JavaScript 初始化:
import Vue from 'vue'; import App from './App.vue'; import router from './router'; import store from './store'; new Vue({ el: '#app', router, store, render: (h) => h(App) // 渲染 App 组件 });
结果:
- Vue 实例挂载到
#app
元素。 - 路由和状态管理生效。
App.vue
作为根组件被渲染。
- Vue 实例挂载到
4. 关键点说明
(1)为什么使用 render
函数?
- 运行时效率:直接渲染虚拟 DOM,跳过模板编译步骤。
- 支持 JSX:若项目中使用 JSX,必须用
render
函数。 - 默认推荐:Vue CLI 生成的项目默认使用此方式。
(2)router
和 store
的作用
- 路由(
router
):管理页面路由,实现 SPA(单页应用)导航。 - 状态管理(
store
):集中管理跨组件共享的数据。
(3)h
的含义
- 是
createElement
的简写,用于创建虚拟节点(VNode)。 - 可接受组件选项(如
App
)或 HTML 标签(如'div'
)。
5. 扩展场景
(1)不传递 router
或 store
若项目不需要路由或状态管理,可省略:
new Vue({
el: '#app',
render: (h) => h(App) // 仅渲染组件
});
(2)手动挂载
延迟挂载(如异步加载完成后):
const vm = new Vue({
router,
store,
render: (h) => h(App)
});
// 在某个条件满足后挂载
vm.$mount('#app');
6. 总结
- 功能:创建 Vue 根实例,挂载到 DOM,集成路由和状态管理。
核心配置:
el
:挂载目标。router
:路由实例。store
:Vuex 实例。render
:根组件渲染逻辑。
- 典型应用:Vue CLI 生成的项目入口文件。
这段代码是 Vue 应用的 启动基石,所有高级功能(如路由、状态管理)都基于此实例展开。