当前位置: 首页 > news >正文

vue实例 与组件实例

vue实例 与组件实例流程图

在这里插入图片描述

🧩 基本解释

✅ Vue 实例

Vue 实例是通过 new Vue({…}) 创建的对象,是整个应用的根节点。

const vm = new Vue({el: '#app',data: { msg: 'Hello Vue' }
});
  • 是整个应用的起点。
  • 只有一个根 Vue 实例(通常)。
  • 控制整个页面或应用结构。

✅ 组件实例(Component Instance)

组件实例是通过注册组件后,在页面中 被创建出来的实例。

Vue.component('MyComp', {props: ['msg'],template: '<div>{{ msg }}</div>'
});<my-comp msg="hello" />
  • 每个 会创建一个组件实例。
  • 实际上是 Vue 的子类实例(通过 Vue.extend 实现)。
  • 每个组件实例都有自己的作用域、数据、方法、生命周期。

📌 核心区别与联系

特性Vue 实例组件实例
创建方式new Vue()Vue.extend() 后 new SubComponent()
作用整体应用入口页面中一个局部功能单元
是否唯一否,可以有多个
是否可嵌套否(根)可以嵌套
生命周期钩子有(几乎一致)
el 选项必须/可选无(父组件控制挂载)

🧬 深入机制对比(Vue 2 源码视角)

✅ Vue 实例创建流程(new Vue())

function Vue(options) {this._init(options); // 初始化逻辑
}

内部核心流程:

vm._init() =>mergeOptions =>initLifecycle =>initEvents =>initRender =>callHook(vm, 'beforeCreate') =>initState (data/props/computed/watcher) =>callHook(vm, 'created') =>vm.$mount(el) => 渲染、patch 挂载到 DOM

✅ 组件实例创建流程(通过模板解析出来)

在编译模板 → render → VNode → patch 时,会创建组件实例:

createComponent(VNode, ...) =>const Ctor = Vue.extend(options) =>const instance = new Ctor({ ... }) // 组件实例

也会调用 _init(),和根 Vue 实例一样的初始化过程!

所以组件实例其实和 Vue 实例没有本质差别,只是继承而来的子类实例。

✅ 组件与 Vue 实例共同点(来自 _init())

  • 生命周期钩子(created、mounted 等)
  • 响应式系统(data、props)
  • 渲染流程(render → vnode → patch)
  • w a t c h 、 watch、 watchset、$emit 等实例方法

🔍 组件实例的额外特点

  • props:通过 initProps() 初始化。
  • 父子关系:有 $parent, $children,用于组件通信。
  • scoped slot、$refs、动态组件等扩展能力。

🔁 Vue 3 差异(简要对比)

特性Vue 2Vue 3
创建 Vue 实例new Vue()createApp()
组件实现方式Vue.extend() + 构造函数函数组件 + Proxy
响应式系统Object.definePropertyProxy
Setup 函数✅ 核心入口,组件逻辑编写点

Vue 3 中 Vue 与组件的统一性更强:

// Vue 3 root
createApp(App).mount('#app');

App 本身就是组件,和子组件机制一致。

✅ 总结

结论点内容
本质 组件实例是Vue 实例的“子类实例”
初始化方式都调用 _init() 进行统一初始化
区别点Vue 实例是入口、组件实例是功能块,具有父子关系
Vue 3通过函数式 API 统一组件与实例创建方式

相关文章:

  • 视频存储开源方案
  • Flutter Web 3.0革命:用WebGPU实现浏览器端实时光追渲染,性能提升300%
  • 论文分享之Prompt优化
  • C++模板与字符串:从入门到精通
  • 什么是HTTP HTTP 和 HTTPS 的区别
  • SQL进阶之旅 Day 4:子查询与临时表优化
  • vue3获取两个日期之间的所有时间
  • PostgreSQL日志管理完整方案(AI)
  • 关于Python编程语言学习的入门总结
  • SQL:合并查询(UNION)
  • .gitignore 的基本用法
  • vSphere 7.0 client 提示HTTP状态 500- 内部服务器错误
  • day021-定时任务
  • 创业团队建设与管理(一)
  • 扣子平台上如何进行对象序列化,JSON序列化和反序列化节点的使用
  • MPI实现中对消息传递的优化
  • 通用的管理账号设置设计(一)
  • 学习python day8
  • leetcode 93. Restore IP Addresses
  • mac for vscode集成的源代码管理 撤销和删除文件报错Permission denied
  • wordpress 大型站/搜索引擎优化的定义是什么
  • 做网站选择什么服务器/中国新闻网发稿
  • 如何使用阿里云服务器建设网站/沈阳百度seo排名优化软件
  • 如何做淘宝客个人网站/百度搜索引擎广告
  • 镇江网站排名优化费用/湘潭seo培训
  • 网站制作怎么做搜索栏/武汉网站推广优化