
源码
文章平均质量分 56
soooyoung
这个作者很懒,什么都没留下…
展开
-
VUE 3.0源码之任务调度模块
任务调度模块的功能在runtime-core下的scheduler文件变量首先会定义几个全局变量用于存储任务和状态。// 主任务队列,用于存储更新任务const queue: (Job | null)[] = []// 后置回调,任务队列执行完毕后执行const postFlushCbs: Function[] = []// 微任务const p = Promise.resolve()// 是否正在执行队列let isFlushing = false// 微任务已创建,任务队列等待执原创 2021-02-02 12:42:47 · 587 阅读 · 0 评论 -
VUEX源码阅读理解
1. Vuex注册let Vuefunction install (_Vue) { Vue = _Vue applyMixin(Vue)}首先定义一个全局变量Vue用于存储传入的Vue,这样可以不使用import Vue from 'vue'的形式引入Vue,这也是为什么实例化前要先使用Vue.use()。然后调用applyMixin(Vue)调用一个全局混入// applyMixinexport default function (Vue) { const version = N原创 2020-09-09 17:19:40 · 255 阅读 · 0 评论 -
VUE-ROUTER源码阅读理解
1. VUE-ROUTER注册主要就是定义获取$router和$route的方式,然后就是注册RouterView和RouterLink两个组件,最后定义路由钩子的合并策略。其它还包括配合缓存组件实例。export function install (Vue) { if (install.installed && _Vue === Vue) return install.installed = true _Vue = Vue const isDef = v =>原创 2021-01-26 11:03:14 · 273 阅读 · 3 评论 -
VUE 3.0源码之watch和watchEffect
1.watch和watchEffect这两都是直接调用doWatch方法,唯一区别就是第二个参数不同。export function watchEffect( effect: WatchEffect, options?: WatchOptionsBase): WatchStopHandle { return doWatch(effect, null, options)}export function watch<T = any>( source: WatchSource原创 2020-11-11 17:38:26 · 1245 阅读 · 1 评论 -
VUE 3.0源码之computed
1. 入口computed方法首先调用_computed实现计算属性,然后调用recordInstanceBoundEffect记录当前的effect,方便当组件卸载时清除import { computed as _computed } from '@vue/reactivity'function computed<T>( getterOrOptions: ComputedGetter<T> | WritableComputedOptions<T>) {原创 2020-09-17 16:10:54 · 671 阅读 · 0 评论 -
VUE 3.0源码之reactive
1. reactive如果是readonlyToRaw(以proxy为可以,已原始值为value的WeakMap,大概表示只读的代理)里的或者是ref的都不处理2. createReactiveObject如果typeof不是object则报警告如果已经代理过了则直接返回代理了的proxy如果本来是proxy则返回如果不满足canObserve则直接返回target如果是set...原创 2020-09-18 18:17:43 · 288 阅读 · 0 评论 -
VUE 3.0源码之effect
effect方法可以用于计算属性功能,通过触发proxy的get方法实现将自身加入到proxy的deps中,实现与proxy关联常规使用步骤1. effect创建一个effect函数,创建时会想调用一遍,这样可以调用相关get并将effect加入相关proxy的deps中function effect<T = any>( fn: () => T, option...原创 2020-09-17 21:36:40 · 510 阅读 · 0 评论