首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
Oracle
›
vue3运行时实行过程步调
返回列表
发新帖
vue3运行时实行过程步调
[复制链接]
发表于 2025-1-9 10:52:01
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
在 Vue 3 中,运行时的实行过程是一个复杂但高效的机制,主要包括初始化应用、渲染、响应式更新和销毁等阶段。以下是 Vue 3 运行时的实行过程的焦点步调和流程:
1. 应用初始化
1.1 创建 Vue 应用
调用 createApp 方法,创建一个 Vue 应用实例。
const app = createApp(App);
复制
代码
Vue 应用实例用于管理整个应用。
App 是根组件(通常是一个对象或 SFC 文件)。
1.2 挂载应用
通过调用 app.mount('#app') 挂载根组件。
Vue 将根据传入的选择器(如 #app),找到 DOM
容器
作为根组件的挂载点。
Vue 运行时会将根组件渲染为虚拟 DOM,并将其挂载到真实 DOM 上。
2. 虚拟 DOM 创建与初次渲染
2.1 渲染函数天生虚拟 DOM
Vue 使用组件定义的 render 函数或编译好的模板函数,天生
虚拟 DOM
(VNode)。
假如使用模板,模板会被预先编译为渲染函数。
渲染函数返回一棵描述 UI 布局的虚拟 DOM 树。
2.2 虚拟 DOM 转换为真实 DOM
Vue 使用虚拟 DOM 树,通过
Diff 算法
将其转换为真实 DOM,并插入到页面中。
调用 patch 方法,递归地创建 DOM 元素并绑定事件等。
3. 组件系统
3.1 创建子组件
当虚拟 DOM 中遇到子组件:
Vue 会递归创建子组件实例。
子组件的 props 会从父组件传递下去。
子组件的生命周期钩子函数会被依次触发(setup、mounted 等)。
3.2 setup 实行
Vue 3 使用 setup 作为组合式
API
的入口:
初始化响应式数据和盘算属性。
绑定方法和事件。
返回的数据和方法将暴露给模板使用。
4. 响应式系统
4.1 数据初始化
Vue 3 的响应式系统基于 Proxy,在 setup 中通过 reactive 或 ref 创建响应式对象:
const state = reactive({ count: 0 });
复制
代码
Vue 会拦截对 state.count 的读取和修改操作。
4.2 依赖收集
当组件渲染时,Vue 会跟踪使用响应式数据的所有依赖(如模板中的绑定或盘算属性)。
依赖收集基于
Effect
(副作用函数),Vue 通过 watchEffect 等机制跟踪变化。
4.3 数据更新
当响应式数据发生变化时,Vue 会通过 scheduler 触发更新。
Vue 会重新运行依赖该数据的渲染函数或副作用函数。
Vue 只会更新受影响的部分 DOM(基于虚拟 DOM Diff 算法)。
5. 更新过程
5.1 虚拟 DOM Diff
Vue 会对比新旧虚拟 DOM 树,找出必要更新的节点。
通过
Diff 算法
,Vue 可以高效地确定变化点。
5.2 真实 DOM 更新
Vue 根据 Diff 结果对真实 DOM 举行最小化更新(增、删、改 DOM 节点)。
确保
性能
优化,避免不必要的重绘和重排。
6. 销毁与卸载
当组件被销毁或卸载时,Vue 会实行以下步调:
生命周期钩子
:触发 beforeUnmount 和 unmounted 钩子。
依赖清算
:移除所有绑定的事件监听器和依赖关系。
DOM 清算
:从 DOM 树中移除组件干系的节点。
Vue 3 运行时的实行过程总结
以下是完整流程的概览:
初始化应用
:创建并挂载根组件。
首次渲染
:通过模板或渲染函数天生虚拟 DOM,并渲染到真实 DOM。
响应式系统
:通过 Proxy 跟踪数据变化,依赖收集和更新。
数据更新
:响应式数据变化触发虚拟 DOM Diff 和真实 DOM 的高效更新。
销毁与清算
:卸载组件时清算干系资源。
Vue 3 的运行时架构使用虚拟 DOM 和响应式系统实现了高效的渲染与更新,同时通过组合式
API
提供了机动的开发体验。
回复
使用道具
举报
返回列表
浏览过的版块
SQL-Server
DevOps与敏捷开发
物联网
数据仓库与分析
开源技术
Java
前端开发
人工智能
SAAS
运维.售后
傲渊山岳
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表