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 统一组件与实例创建方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/907066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive 分桶(Bucketing)深度解析:原理、实战与核心概念对比

一、分桶的意义&#xff1a;比分区更细的粒度管理 1.1 解决分区数据不均匀问题 分区的局限性&#xff1a;分区基于表外字段&#xff08;如时间字段&#xff09;划分数据&#xff0c;但可能导致部分分区数据量过大&#xff0c;部分过小&#xff0c;无法进一步细化。 分桶的定…

pytest+allure+allure-pytest 报告输出遇到的问题汇总

文章目录 前言问题一&#xff1a;module allure has no attribute severity_level问题二&#xff1a;ERROR:file or directory not found: ‐vs问题三&#xff1a;生成的 html 报告是空的&#xff0c;明明有测试用例执行完成&#xff0c;但报告没有显示数据 前言 pytestallure…

升级node@22后运行npm install报错 distutils not found

从node20升级到node22后&#xff0c;在运行 npm install 的时候报了很多 gyp 错误&#xff0c;其中包括 npm error npm error ModuleNotFoundError: No module named distutils。 问题原因是我在使用 brew install node22 的过程中自动把 python 升级到了 3.13。而 distutils …

IPD流程落地:项目任务书Charter开发

目录 简介 第一个方面&#xff0c;回答的是Why的问题。 第二点&#xff0c;要回答做什么的问题&#xff0c;也就是产品定义What的问题。 第三点就是要回答执行策略与计划的问题&#xff0c;也就是How、When、Who的问题。 第四点是对上述这些分析的总结分析&#xff0c;要为…

Qt popup窗口半透明背景

半透明弹窗需要paintEvent()接口支持 方法一&#xff1a;使用setStyleSheet设置半透明样式&#xff0c;如果是子窗口&#xff0c;则可注释构建函数内属性设置 class TranslucentWidget : public QWidget { public: explicit TranslucentWidget(QWidget *parent nullptr)…

Excel快捷键大全

Excel快捷键 工作表操作快速选择区域快速跳转/视图操作单元格公式批量填充与编辑功能键打开/关闭工作簿 工作表操作 快捷键功能ShiftF11(或Alt→H→I→S)默认插入新工作表到当前工作表左侧的左侧Alt→E→L→Enter删除当前工作表&#xff0c;删除后不可销&#xff0c;须谨慎操作…

SQLMesh 用户定义变量详解:从全局到局部的全方位配置指南

SQLMesh 提供了灵活的多层级变量系统&#xff0c;支持从全局配置到模型局部作用域的变量定义。本文将详细介绍 SQLMesh 的四类用户定义变量&#xff08;global、gateway、blueprint 和 local&#xff09;以及宏函数的使用方法。 一、变量类型概述 SQLMesh 支持四种用户定义变量…

爬虫学习-Scrape Center spa6 超简单 JS 逆向

关卡 spa6 电影数据网站&#xff0c;无反爬&#xff0c;数据通过 Ajax 加载&#xff0c;数据接口参数加密且有时间限制&#xff0c;适合动态页面渲染爬取或 JavaScript 逆向分析。 首先抓包发现get请求的参数token有加密。 offset表示翻页&#xff0c;limit表示每一页有多少…

webtrees——在线协作家谱

webtrees——在线协作家谱 内容 执照编码风格和标准介绍系统要求互联网浏览器兼容性安装升级建设与发展Gedcom&#xff08;家谱&#xff09;文件安全备份从备份还原 执照 webtrees&#xff1a;在线家谱版权所有 2022 webtrees 开发团队 该程序是免费软件&#xff1a;您可以根据…

day 37

模型的保存和加载 仅保存模型参数 - 原理&#xff1a;保存模型的权重参数&#xff0c;不保存模型结构代码。加载时需提前定义与训练时一致的模型类。 - 优点&#xff1a;文件体积小&#xff08;仅含参数&#xff09;&#xff0c;跨框架兼容性强&#xff08;需自行定义模型结…

MFC:获取所有打印机的名称(打印机模块-2)

背景&#xff1a; “遍历当前用户的每一台虚拟打印机&#xff0c;将其默认纸张设置为 A4 并设置为纵向。” 实现原理&#xff1a; 1.从当前用户的注册表读取所有已配置的打印机&#xff1b; 2.遍历每台打印机&#xff1b; 3.输出其逻辑与实际纸张大小&#xff1b; 4.尝试设置…

Python驱动的游戏场景实时生成:如何用AI创造无限可能?

友友们好! 我是Echo_Wish,我的的新专栏《Python进阶》以及《Python!实战!》正式启动啦!这是专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会…

手机发热怎么办?

1⃣关闭后台程序 &#x1f449; 把后台运行的其他程序关掉&#xff0c;玩游戏或看视频前&#xff0c;先清理一下后台&#xff0c;避免发热 2⃣“脱掉”手机壳 &#x1f449;夏天可以换成轻薄的散热壳&#xff0c;比如金属、亚克力材质的&#xff0c;或者暂时取下手机壳 3⃣物理…

【安全攻防与漏洞​】​​HTTPS中的常见攻击与防御​​

HTTPS 中常见攻击与防御策略涵盖中间人攻击&#xff08;MITM&#xff09;、SSL剥离、重放攻击等&#xff0c;帮助构建安全的 HTTPS 通信环境&#xff1a; 一、中间人攻击&#xff08;MITM&#xff09; 攻击原理 场景&#xff1a;攻击者通过伪造证书或劫持网络流量&#xff0c…

如何搭建perfino监控(分析java服务性能)

本文主要解释如何搭建perfino监控服务, 用于关注生产环境的性能指标, 提前知道什么时候达到服务器资源瓶颈, 避免资源不足时手忙脚乱~ 1. 安装与部署​ ​​1. 下载与安装​ ​官网下载​&#xff1a;Perfino 官网 获取最新版本&#xff08;支持 Windows/Linux/macOS&#xf…

5 分钟速通密码学!

让我们开始第一部分&#xff1a;密码学基础 (Cryptography Basics)。 第一部分&#xff1a;密码学基础 (Cryptography Basics) 1. 什么是密码学&#xff1f; 想象一下&#xff0c;在古代战争中&#xff0c;将军需要向远方的部队传递作战指令。如果直接派人送信&#xff0c;信…

MyBatis入门:快速搭建数据库操作框架 + 增删改查(CRUD)

一、创建Mybatis的项目 Mybatis 是⼀个持久层框架, 具体的数据存储和数据操作还是在MySQL中操作的, 所以需要添加MySQL驱动 1.添加依赖 或者 手动添加依赖 <!--Mybatis 依赖包--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactI…

基于Ubuntu的ros版本切换

解决在同一个虚拟机中管理两个不同版本的ros 基于Ubuntu&#xff08;20.04&#xff09; ros版本1和版本2的切换 前期准备&#xff1a;已经在Ubuntu中安装了两个版本的ros&#xff0c;这里以版本1的noetic和版本2的foxy为例 在bashrc中&#xff1a; # ~/.bashrc: executed by…

vue2:横向无限轮播

子组件 <template><div class"infinite-scroll" ref"scrollContainer"><div class"scroll-content" :style"{ transform: translateX(${scrollPosition}px) }"><div v-for"(item, index) in displayItems&q…

CVE-2021-44228源码分析与漏洞复现

漏洞概述 漏洞名称&#xff1a;Apache Log4j2 远程代码执行漏洞 漏洞编号&#xff1a;CVE-2021-44228 CVSS 评分&#xff1a;10.0 影响版本&#xff1a;Apache Log4j 2.0-beta9 至 2.14.1 修复版本&#xff1a;2.15.0、2.16.0 CVE-2021-44228 是 Apache Log4j2 日志框架中因 …