• Stars
    star
    9,044
  • Rank 3,819 (Top 0.08 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created almost 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

实现最简 vue3 模型( Help you learn more efficiently vue3 source code )

CN / EN

mini-vue github

实现最简 vue3 模型,用于深入学习 vue3, 让你更轻松的理解 vue3 的核心逻辑

Usage

B 站 提供了视频讲解使用方式

Why

当我们需要深入学习 vue3 时,我们就需要看源码来学习,但是像这种工业级别的库,源码中有很多逻辑是用于处理边缘情况或者是兼容处理逻辑,是不利于我们学习的。

我们应该关注于核心逻辑,而这个库的目的就是把 vue3 源码中最核心的逻辑剥离出来,只留下核心逻辑,以供大家学习。

How

基于 vue3 的功能点,一点一点的拆分出来。

代码命名会保持和源码中的一致,方便大家通过命名去源码中查找逻辑。

Tasking

runtime-core

  • 支持组件类型
  • 支持 element 类型
  • 初始化 props
  • setup 可获取 props 和 context
  • 支持 component emit
  • 支持 proxy
  • 可以在 render 函数中获取 setup 返回的对象
  • nextTick 的实现
  • 支持 getCurrentInstance
  • 支持 provide/inject
  • 支持最基础的 slots
  • 支持 Text 类型节点
  • 支持 $el api
  • 支持 watchEffect

reactivity

目标是用自己的 reactivity 支持现有的 demo 运行

  • reactive 的实现
  • ref 的实现
  • readonly 的实现
  • computed 的实现
  • track 依赖收集
  • trigger 触发依赖
  • 支持 isReactive
  • 支持嵌套 reactive
  • 支持 toRaw
  • 支持 effect.scheduler
  • 支持 effect.stop
  • 支持 isReadonly
  • 支持 isProxy
  • 支持 shallowReadonly
  • 支持 proxyRefs

compiler-core

  • 解析插值
  • 解析 element
  • 解析 text

runtime-dom

  • 支持 custom renderer

runtime-test

  • 支持测试 runtime-core 的逻辑

infrastructure

  • support monorepo with pnpm

build

pnpm build

example

通过 server 的方式打开 packages/vue/example/* 下的 index.html 即可

� 推荐使用 Live Server

初始化

流程图

初始化流程图

可加 vx:cuixr1314 获取所有脑图(备注:github mini-vue 领取脑图)

关键函数调用图

关键函数调用图2

可以基于函数名快速搜索到源码内容

update

流程图

image

关键函数调用图

image

可以基于函数名快速搜索到源码内容

从零到一实现一遍

自从有了 mini-vue 之后 很多同学都问我 能不能带着他从零到一敲一遍

因为对于源码的学习来讲 看在多遍也不如自己写一遍

为此我把 mini-vue 做成了一套视频课 从零到一带着大家实现一遍 不跳过任何一行代码

当然除了功能上的实现还有编程思想融入到了课程内

比如 TDD、小步走、重构手法、TPP

TDD 测试驱动开发 影响了我整个技术生涯 可以说在我认识到 TDD 之后 技术才有了质的飞跃

课程目录如下:

  1. vue3 源码结构的介绍
  2. reactivity 的核心流程
  3. runtime-core 初始化的核心流程
  4. runtime-core 更新的核心流程
  5. setup 环境 -> 集成 jest 做单元测试 & 集成 typescript
  6. 实现 effect 返回 runner
  7. 实现 effect 的 scheduler 功能
  8. 实现 effect 的 stop 功能
  9. 实现 readonly 功能
  10. 实现 isReactive 和 isReadonly
  11. 优化 stop 功能
  12. 实现 reactive 和 readonly 嵌套对象转换功能
  13. 实现 shallowReadonly 功能
  14. 实现 isProxy 功能
  15. 实现 isProxy 功能
  16. 实现 ref 功能
  17. 实现 isRef 和 unRef 功能
  18. 实现 proxyR 功能
  19. 实现 computed 计算属性功能
  20. 实现初始化 component 主流程
  21. 实现 rollup 打包
  22. 实现初始化 element 主流程
  23. 实现组件代理对象
  24. 实现 shapeFlags
  25. 实现注册事件功能
  26. 实现组件 props 功能
  27. 实现组件 emit 功能
  28. 实现组件 slots 功能
  29. 实现 Fragment 和 Text 类型节点
  30. 实现 getCurrentInstance
  31. 实现依赖注入功能 provide/inject
  32. 实现自定义渲染器 custom renderer
  33. 更新 element 流程搭建
  34. 更新 element 的props
  35. 更新 element 的 children
  36. 双端对比 diff 算法1
  37. 双端对比 diff 算法2 - key 的作用
  38. 双端对比 diff 算法3 - 最长子序列的作用
  39. 学习尤大解决 bug 的处理方式
  40. 实现组件更新功能
  41. 实现 nextTick 功能
  42. 编译模块概述
  43. 实现解析插值功能
  44. 实现解析 element 标签
  45. 实现解析 text 功能
  46. 实现解析三种联合类型 template
  47. parse 的实现原理&有限状态机
  48. 实现 transform 功能
  49. 实现代码生成 string 类型
  50. 实现代码生成插值类型
  51. 实现代码生成三种联合类型
  52. 实现编译 template 成 render 函数
  53. 实现 monorepo & 使用 vitest 替换 jest

课程内部包含了 vue3 的三大核心模块:reactivity、runtime 以及 compiler 模块

等你自己手写一遍之后 在去看 vue3 源码或者再去看分析解析 vue3 源码的书籍时你会有不同的体验

除此之外 还录制了课程介绍以及课程试听课

可以直接购买 也可以加我 wx: cuixr1314 来咨询这门课是否合适你

除了课程内容以外 还有专门的社群来答疑大家在学习上的问题 😊

More Repositories

1

daily-share

每日分享有趣、有用,最新的信息 FOR EVERY CODER
154
star
2

vue-magic

共读 vue3
112
star
3

vue-pixijs

Develop pixijs using vue3.0
JavaScript
111
star
4

study-every-day

stduy programming skills of javascript every day
107
star
5

guide-mini-vue

mini-vue 教学代码
JavaScript
89
star
6

vue3-dida

Real-world vue3 projects with complete testing
TypeScript
70
star
7

front-end-testing

涵盖前端开发所需的所有测试技能
TypeScript
65
star
8

cReptile

爬取电影网站,生成免费电影url
JavaScript
65
star
9

one-step

vue3 开发 一步到位 开箱即用
TypeScript
53
star
10

chunquchunyoulai

随便记录点啥(个人博客)
44
star
11

vue3-test-course

写给前端的测试课
TypeScript
42
star
12

VSCodeVim

Vim for Visual Studio Code
TypeScript
34
star
13

teach-koa-setup

实现一个基于 nodejs 的 cli 工具
JavaScript
32
star
14

tetris-vue3

使用 vue3 来实现俄罗斯方块
JavaScript
29
star
15

mini-webpack

webpack 的教程
JavaScript
28
star
16

tdl-ts

test driver learn typescript
TypeScript
24
star
17

refactoring-to-patterns

重构与模式
TypeScript
24
star
18

koa-setup

setup koa 开发坏境
JavaScript
22
star
19

autoWechatMass

使用 robotjs 实现的微信群发功能
JavaScript
22
star
20

vite-scaffold-template

for vite template
JavaScript
18
star
21

algorithm

基于js实现各类算法
JavaScript
18
star
22

teach-vue-practice

vue practice for teach
Vue
18
star
23

teach-tetris-vue3

教学版俄罗斯方块
TypeScript
17
star
24

coder-game

程序员的游戏人生
16
star
25

obsidian-plugin-deploy-content-to-anywhere

obsidian 插件,把 md 的内容部署到任何地方
JavaScript
15
star
26

bezierCurvDraw

基于贝塞尔曲线拟合算法实现绘制平滑曲线
JavaScript
15
star
27

web-camp

web集训营
JavaScript
15
star
28

tank

坦克大战
TypeScript
14
star
29

vue3-think

记录学习思考 vue3 的所有
13
star
30

the-tutorial-super-tiny-compiler

the tutorial super tiny compiler
TypeScript
12
star
31

mini-pack

理解打包工具得核心原理
JavaScript
12
star
32

recordCourse

一个教你如何优雅的实现撤销、回退记录的教程(如同浏览器的撤销回退)
HTML
12
star
33

delete-function

vscode extension quick delete function
TypeScript
11
star
34

learn-language

学习编译原理
TypeScript
11
star
35

play-plane

探索前端UI层和业务逻辑层的分层架构
TypeScript
10
star
36

course-vue3-test

teaching how to write test for vue3
JavaScript
10
star
37

recordWeb

浏览器内实现录音功能得demo
JavaScript
10
star
38

mini-vite

实现 mini vite ,学习 vite 原理
JavaScript
9
star
39

second-brain

To build the second brain
9
star
40

weapon

实践: 使用 tdd 开发组件库
JavaScript
9
star
41

teaching-vuejs

Teaching case for vuejs
JavaScript
9
star
42

learn-solidjs

learn solidjs
TypeScript
8
star
43

cx

retro zxjs
JavaScript
8
star
44

bilibili-app

bilibili 直播桌面app
JavaScript
7
star
45

guide-rollup

rollup 教程
JavaScript
7
star
46

refactoring

重构教程
TypeScript
7
star
47

chatBot

AI chatbot running in the terminal based on nodejs and openai implementation
TypeScript
7
star
48

earthworm

Learning English through the method of constructing sentences with conjunctions
TypeScript
6
star
49

keyboard-man

键盘侠养成训练营(快捷键)
6
star
50

mini-rollup

实现 mini-rollup 学习 rollup 原理
JavaScript
6
star
51

configuration

对配置信息的备份以及恢复的解决方案
6
star
52

babel-plugin-dev-debug

an babel plugin that for dev debug
JavaScript
6
star
53

vue3-template-magic

template code generator for vue3 template
TypeScript
6
star
54

guide-webpack

webpack 教程
JavaScript
6
star
55

tdd-protect

tdd protect for deliberate practice tdd
JavaScript
6
star
56

cxr-axios

通过 tdd 简单实现 axios
JavaScript
6
star
57

tdd-mars-rover

假想你在火星探索团队中负责软件开发。现在你要给登陆火星的探索小车编写控制程序,根据地球发送的控制指令来控制火星车的行动。
JavaScript
6
star
58

sokoban-vue3

sokoban game by vue3
TypeScript
5
star
59

solidjs-real-world

solidjs real world
TypeScript
5
star
60

solidjs-crash-course

solidjs crash course
JavaScript
4
star
61

til

today i learned
4
star
62

element3-demo

用于演示 element3
Vue
4
star
63

MVVM

实现简单的mvvm框架,用于学习
JavaScript
4
star
64

learn-grammer-by-picture

learn grammer by picture
JavaScript
4
star
65

guide-test

前端工程测试方向教程
JavaScript
4
star
66

quickOpenLazygit

quick open lazygit on vscode
TypeScript
4
star
67

execute-shell-webpack-plugin

webpack 插件,可在构建阶段执行 shell 命令
JavaScript
4
star
68

create-daily-share-issue-action

automatic create daily plan issue for cuixiaorui/study-every-day
JavaScript
4
star
69

length

重构Length
JavaScript
3
star
70

guide-vite

vite 教程
JavaScript
3
star
71

opinion-ate-vue3

基于 vue3 最新的技术栈来实现 TDD
JavaScript
3
star
72

tutorial-eslint-plugin

tutorial eslint plugin
JavaScript
3
star
73

virtualDom

实现简单的虚拟dom,用于学习
JavaScript
3
star
74

vitest-tutorial

vitest tutorial
CSS
3
star
75

teach-create-issues-action

teach create issues action
JavaScript
3
star
76

cVideoCrawler

基于命令行的视频爬虫。
JavaScript
3
star
77

high-performance-timer

高性能的定时器
JavaScript
2
star
78

toy-browser

build toy browser
HTML
2
star
79

cuixiaorui

2
star
80

cache-LRU

实现缓存淘汰策略(LRU)
JavaScript
2
star
81

teach-resume

teach resume
Astro
2
star
82

tutorial-playwright-component-test-vue3

tutorial playwright component test vue3
HTML
2
star
83

mini-react

build mini-react for learn react principle
JavaScript
2
star
84

vue3-play-plane

use vue3 and pixijs build play plane game
JavaScript
1
star
85

markdown-to-htmlStr-webpack-loader

webpack loader for markdown to html string
JavaScript
1
star
86

opinion-ate

由外到内的测试驱动开发前端实战项目
JavaScript
1
star
87

tdd-args

tdd 练习项目 args
JavaScript
1
star
88

obsidian-plugin-daily-share-commit

obsidian plugin that commit to daily share
JavaScript
1
star
89

string-fsm

有限状态机的应用
JavaScript
1
star
90

resume-template

resume template
Astro
1
star
91

args

command line tool
TypeScript
1
star
92

tdd-learn-nodejs

通过测试驱动学习 nodejs
JavaScript
1
star
93

tutorial-node-typescript

使用 ts 编写 express 服务器的教程
TypeScript
1
star
94

cypress-issue-for-vue3-compoment-test-hot-update

cypress issue for vue3 compoment test hot update
TypeScript
1
star
95

teach-nodemon

学习 nodemon 的实现原理
JavaScript
1
star
96

learn-turbo

learn turbo demo
Vue
1
star
97

video-hhh

The statistics of video time
JavaScript
1
star
98

vue3-ai-assistant

build a chatbot to read vue3 document with langchain and openai
JavaScript
1
star
99

tutorial-travis-ci

使用 travis 的教程
JavaScript
1
star
100

tutorial-rollup-plugin-alias

tutorial rollup plugin alias
TypeScript
1
star