# VUE3源码学习
**Repository Path**: rongchase/vue3-source-code-learning
## Basic Information
- **Project Name**: VUE3源码学习
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-16
- **Last Updated**: 2025-03-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: vue3源码
## README
# VUE3 源码学习
#### 介绍
Vue源码 学习
#### 软件架构
软件架构说明
#### 安装教程
1. npm install
2. npm run dev
#### 使用说明
vue3 原理主要包括响应式,底层主要涉及到 reactive 及副作用 effect。
**注意:组件、watch、computed等 都是基于 effect 来实现**
reactive 方法主要将对象通过 proxy 生成响应式的代理对象,在获取属性时会对代理对象进行一个依赖收集(主要是记录使用哪些对象,以及对象的哪些属性),并将这些依赖与副作用 effect 进行关联,每当响应式变量属性值改变时,就会执行该对象属性对应收集依赖中的副作用,以此达到页面更新的目的。
reactive 主要优化点:
1. 在生成响应式对象时,若同时用多个 reactive 去代理同一个对象(用 WeakMap 缓存了历史响应式对象),实际上返回的是同一个代理对象
2. 用 reactive 去代理一个以及已经是响应式的对象(此时会判断该对象中是否存在只有响应式变量才有的属性 IS_REACTIVE,若是响应式对象该值会返回 true),此时也只会返回原来的响应式对象
effect 副作用主要优化点:
1. 在依赖收集时也会用 WeakMap 缓存历史依赖,避免在一次副作用执行时生成重复的依赖对照关系
2. 副作用使用\_trackId 记录当前执行的次数,不是同一次执行(\_trackId 不同)需要重新收集依赖,将不需要的移除掉