学习vue源码前置知识
在学习源码前需要了解Vue2版本源码中用到的类型检查工具,flow,Java script是动态弱类型语言,对数据类型不严格,在生产阶段往往会产生一些bug,flow是Facebook 出版的类型检查工具,和ts一样,可以使项目在开发阶段就把类型检查相关的bug解决和避免
了解vue源码目录
compiler
compiler目录是vue编译相关代码里面有模板解析成 ast 语法树,ast 语法树优化,代码生成等功能。
core
core 目录包含了 Vue.js 的核心代码,包括内置组件、全局 API 封装,Vue 实例化、观察者、虚拟 DOM、工具函数等等。
platform
platform里面有俩个文件夹,分别对应web端和跨端应用
server
server是服务端渲染相关支持,服务端渲染主要的工作是把组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序。
sfc
sfc是帮助我们把.vue转化成一个大js对象
了解完源码目录结构就可以发现,作者把每个模块拆分详细,提高了可读性复用性
vue2源码构建
在运行构建命令时候,会走packjson对应的scripts/build.js文件中,在这个文件中首先得到了一些配置文件,然后对配置文件进行过滤,判断了当前环境,如果是web环境丢弃一些包,如果是跨端使用其他包,
vue中moutend或methods为什么可以访问data里的数据
在初始化state的时候 对data做了初始化把当前实例传了进去
最后调用proxy进行代理,把data里的key,value挂载到this身上,这样就做到了this可以访问data
vue根节点
在初始化最后调用了$mount方法传进去了el节点
然后对el进行了判断是不是body或者html节点
下面对render进行了判断,如果没有render函数并且是template就转成render 如果是render就不用处理直接指向一下
er进行了判断,如果没有render函数并且是template就转成render 如果是render就不用处理直接指向一下
|