# 文件浅析对照

# 目录结构

  • benchmarks 性能、基准测试
  • dist 打包输出
  • flow flow 语法类型声明 理解为约束接口吧哈哈
  • packages 一些额外的包
  • scripts 构建源码的文件夹
    • build.js 构建入口
  • src 源码开始
    • core 你要学的都在里面啦
    • platforms 构建后不同平台的入口
    • server 服务器渲染相关
  • compiler 编译器
  • test
  • types ts类型声明 对应一下flow

# core核心

  • config.js 默认配置
  • index.js 入口
  • components 全局组件 keep-alive
  • globle-api 全局api
    • assets.js 'component','directive','filter'
    • extend.js 靠创建子类构造器Sub.prototype - mergeOptions - Sub.extend = Super.extend
    • index.js 入口 你会看到很多init
    • mixin.js mergeOptions
    • use.js Vue.use = function (plugin: Function | Object){ 用apply }
  • instacne vue实例开始
    • render-helpers
    • events.js vm._events是在实例上的,暴露给外面 $on $off $emit
    • index.js 入口 并且你会看到很多定义在原型上的mixin
    • init.js this._init(option) vm->/生命周期/events/响应式/provide
    • inject.js initProvide & initInjections
    • lifecycle.js $parent/$children/$refs $forceUpdate(利用$watcher)
    • proxy.js 响应式(仅仅init拦截)拦截 vm._renderProxy = new Proxy(vm, handlers)// 代理vm实例到vm属性
    • render.js $slots createElement vnode
    • state.js 响应式!connect observe&watch
  • observer 响应式原理
  • util 工具方法
    • debug.js
    • env.js
    • error.js
    • index.js
    • lang.js
    • next-tick.js
    • option.js 关于合并选项的规则
    • perf.js
    • props.js
  • vdom 虚拟dom和渲染和patch相关
Last Updated: 2022/6/26 上午11:43:14