Vue3.0源码结构分析
时间:2022-07-24
本文章向大家介绍Vue3.0源码结构分析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
“关注 前端开发社区 ,回复“ 1” 即可加入 前端技术交流群,回复 “ 2” 即可免费领取500G前端干货!
Vue3.0源码结构分析
首先我们对vue的源码结构进行说明,搞懂每个文件夹里面代表啥,这样才能有针对性的去分析,学习。
Vue 源码地址: https://github.com/vuejs/vue-next
Vue2与Vue3的对比
- 对
TypeScript
支持不友好(所有属性都放在了this
对象上,难以推倒组件的数据类型) - 大量的API挂载在Vue对象的原型上,难以实现
TreeShaking
。 - 架构层面对跨平台dom渲染开发支持
不友好
-
CompositionAPI
。受ReactHook
启发 - 对
虚拟DOM
进行了重写
、对模板的编译进行了优化操作...
项目结构
clone 下来的源码结构如下:
-
reactivity
:响应式系统 -
runtime-core
:与平台无关的运行时核心 (可以创建针对特定平台的运行时 - 自定义渲染器) -
runtime-dom
: 针对浏览器的运行时。包括DOM API,属性,事件处理等 -
runtime-test
:用于测试 -
server-renderer
:用于服务器端渲染 -
compiler-core
:与平台无关的编译器核心 -
compiler-dom
: 针对浏览器的编译模块 -
compiler-ssr
: 针对服务端渲染的编译模块 -
template-explorer
:用于调试编译器输出的开发工具 -
shared
:多个包之间共享的内容 -
vue
:完整版本,包括运行时和编译器
+---------------------+
| |
| @vue/compiler-sfc |
| |
+-----+--------+------+
| |
v v
+---------------------+ +----------------------+
| | | |
+------------>| @vue/compiler-dom +--->| @vue/compiler-core |
| | | | |
+----+----+ +---------------------+ +----------------------+
| |
| vue |
| |
+----+----+ +---------------------+ +----------------------+ +-------------------+
| | | | | | |
+------------>| @vue/runtime-dom +--->| @vue/runtime-core +--->| @vue/reactivity |
| | | | | |
+---------------------+ +----------------------+ +-------------------+
最近:
请各位帅哥美女多多支持帅编,回复“ 1” 即可加入前端技术交流群,回复“ 2” 即可领取500G前端干货
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 「Mysql索引原理(十三)」索引案例2-避免多个范围条件
- 「Mysql索引原理(十四)」索引案例3-优化排序
- 字符仿真
- 「Mysql索引原理(十五)」维护索引和表-修复损坏的表
- 「Mysql索引原理(十六)」维护索引和表-更新索引统计信息
- 「Mysql索引原理(十七)」维护索引和表-减少索引和数据的碎片
- 「通信框架Netty4 源码解读(一)」起步,关于IO的简单总结,模拟一个redis客户端
- Unet实现文档图像去噪、去水印
- 「influxDB 原理与实践(一)」安装部署,实现基础的添加删除查询功能
- 「influxDB 原理与实践(二)」详解influxDB的写入与查询
- Nginx系列:https配置
- 笛卡尔积、等值连接、自然连接、外连接一文看懂
- nginx系列:常用利用shell统计日志
- Nginx系列:图片过滤处理
- Nginx系列:几款负载均衡第三方插件的安装与使用