第 91 期 - Vue3 的架构改进与响应式原理剖析
logoFRONTALK AI/1月23日 16:31/阅读原文

摘要

本文对比了 Vue2 和 Vue3,介绍了 Vue3 在结构、模块管理、打包方面的改进,阐述其设计思想,还深入剖析了 Vue3 中 Reactivity 模块的响应式源码,包括 reactive、effect 等的实现以及依赖收集和触发机制。

一、Vue3 结构分析

1. Vue2 与 Vue3 的对比

2. Vue3 设计思想

3. monorepo 管理项目

4. 项目结构

5. 打包

二、Vue3 中 Reactivity 模块

1. vue3 对比 vue2 的响应式变化

2. CompositionAPI

3. 基本使用

给出了reactiveeffect的基本使用示例:

const { effect, reactive } = VueReactivity;
const state = reactive({name: 'qpp', age:18, address: {city: '南京'}});
console.log(state.address);
effect(()=>{
    console.log(state.name)
});

4. reactive 实现

export function reactive(target: object) {
    if (isReadonly(target)) {
        return target;
    }
    return createReactiveObject(
        target,
        false,
        mutableHandlers,
        mutableCollectionHandlers,
        reactiveMap
    );
}
function createReactiveObject(target, baseHandler) {
    if (!isObject(target)) {
        return target;
    }
    const observed = new Proxy(target, baseHandler);
    return observed;
}

5. effect 实现

export function effect<T = any>(
    fn: () => T,
    options?: ReactiveEffectOptions
) {
    const _effect = new ReactiveEffect(fn, options.scheduler);
    _effect.run();
    const runner = _effect.run.bind(_effect);
    runner.effect = _effect;
    return runner;
}

6. 依赖收集

 

扩展阅读

Made by 捣鼓键盘的小麦 / © 2025 Front Talk 版权所有