• Stars
    star
    177
  • Rank 215,125 (Top 5 %)
  • Language
    JavaScript
  • Created about 6 years ago
  • Updated about 1 month ago

Reviews

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

Repository Details

模仿 Vue1.0 写的迷你版 Vue

MiniVue

克隆项目之后 运行

npm run dev

可以查看一些指令的展示效果 不过没有排版 样式比较丑陋 建议对比着指令来看 也可以自己写一些代码看效果 指令用法和 Vue 一样的

Vue1和Vue2的区别

其实 Vue1 和 Vue2 最大的区别就是 Vue2 多了一个虚拟DOM,其他的区别都是很小的。所以理解了 Vue1 的源码,就相当于理解了 Vue2,中间差了一个虚拟DOM 以及 Diff 算法

网友的学习笔记

文档

MVVM

先来科普一下MVVM的概念及原理

配套插件

mini-vuex

实现一个迷你版的vue

实现的功能

全局方法

// 继承MiniVue 产生一个新的子类构造函数
MiniVue.extend
// 在实例化过程完成后运行
MiniVue.nextTick
// 注册自定义指令
MiniVue.directive
// 过滤器
MiniVue.filter 
// 组件 包括slot props
MiniVue.component
// 插件
MiniVue.use
// 混入
MiniVue.mixin

mixins filters components directives 也可以局部注册 在new一个实例时提供以下选项即可

filters
components
mixin
directives

实例方法

vm.$watch
vm.$set
vm.$delete
vm.$on
vm.$once
vm.$off
vm.$emit
vm.$nextTick

指令

v-text
v-html
v-show
v-if
v-else
v-for
v-on
v-bind
v-model

计算属性

计算属性用法也和Vue一样

生命周期

init
created
beforeCompiled
compiled
destroyed

以上实现的功能用法和Vue一模一样

如何阅读源码

阅读源码要带有目的去看 不能毫无目的的去看源码 以免掉进无尽的细节陷阱中而出不来

Vue源码要怎么看呢

建议从一个Vue实例化的过程开始 一直跟踪这条主线 直到结尾为止(一定要打断点 debugger 我打了100多个断点才看懂主流程) 各种分枝暂时不要管 等把主线理解清楚了 细枝末节自然不在话下

Vue1.0模块

在Vue主线里和数据双向绑定有关的有以下几个模块

  • Vue构造函数
  • 观察者observer
  • 观察者watcher
  • 指令系统 directive类和directives指令函数集合
  • DOM解析compile
  • watcher与observer之间的联系者dep

我们来看看他们之间的关系

vue流程图

如果不是想自己实现一个mvvm框架 Vue的源码不用细读 只要明白主线的运行过程就行了 想要熟练使用Vue看官方文档即可
想了解主线流程的 可以看看我的v0.1版本 300行代码 完整的实现了双向数据绑定的流程 还有3条指令的实现过程 其实其他的指令即使没实现 也没什么关系 主流程明白即可

MiniVue v0.1

学习Vue源码推荐看这篇文章

如果对你有帮助,请给个Star

More Repositories

1

visual-drag-demo

一个低代码(可视化拖拽)教学项目
Vue
5,107
star
2

nand2tetris

计算机系统要素-从零开始构建现代计算机
JavaScript
2,630
star
3

introduction-to-front-end-engineering

一本小书《带你入门前端工程》
1,885
star
4

MIT6.828

实现一个操作系统内核
C
1,796
star
5

Front-end-articles

分享我的编程经验和学习心得,订阅请点 watch
JavaScript
1,523
star
6

Front-end-basic-knowledge

前端知识点、面试题
792
star
7

vue-admin-template

Vue 轻量级后台管理系统基础模板
Vue
763
star
8

vue-form-maker

Vue 表单生成器——动态生成表单组件
JavaScript
259
star
9

monitor-demo

一个前端监控 SDK 教学项目
JavaScript
186
star
10

true-question

计算机及应用(本科)自考历年真题分享
159
star
11

mini-cli

模仿 Vue CLI 写的迷你版脚手架
JavaScript
124
star
12

node-blog

用 node 搭建个人博客
JavaScript
119
star
13

mini-single-spa

一个微前端框架教学项目
TypeScript
109
star
14

2017ife-task

2017百度前端技术学院任务
JavaScript
61
star
15

tiny-rendering-engine

从零开始实现一个玩具版浏览器渲染引擎
TypeScript
60
star
16

vue-upload-imgs

vue 图片上传组件(base64 版)
JavaScript
50
star
17

copy-rollup

拷贝自 rollup 初版源码,并对其进行了部分修改
JavaScript
46
star
18

i18n-replace

前端国际化辅助工具——自动替换中文并翻译
JavaScript
44
star
19

2016ife-task

2016百度前端技术学院任务
HTML
39
star
20

vue-ssr-demo

Vue 服务端渲染 demo
JavaScript
29
star
21

front-end-specification

前端规范
27
star
22

front-end-engineering-demo

前端工程化 demo
JavaScript
23
star
23

lowcode-llm-demo

低代码与大语言模型的结合实践 demo
Python
21
star
24

Computer-Networking-Lab

计算机网络-自顶向下-第六版实验
JavaScript
19
star
25

Algorithm

《算法》第 4 版 JavaScript 实现
JavaScript
19
star
26

platform-template-generator

JavaScript
18
star
27

micro-frontend-demo

微前端 DEMO
JavaScript
17
star
28

vite-vue3-eslint-stylelint-demo

vite-vue3-eslint-stylelint-demo 代码自动格式化
JavaScript
13
star
29

leetcode

leetcode
JavaScript
11
star
30

git-hooks-demo

用于演示 git hooks 脚本的 DEMO
JavaScript
10
star
31

table-tree

一个jquery树形表格组件
HTML
10
star
32

2018ife-task

2018前端技术学院任务
HTML
10
star
33

Notes-and-Labs

计算机学习笔记及实践
10
star
34

mini-vuex

和mini-vue配套使用的状态管理模式
JavaScript
10
star
35

markdown-editor-sync-scroll-demo

markdown 编辑器双屏同步滚动
HTML
9
star
36

source-map-demo

对压缩过的代码报错信息进行还原
HTML
9
star
37

vue-mergeable-table

根据数据动态生成可合并行列的表格
Vue
8
star
38

MIT6.830

实现一个数据库
6
star
39

rollup-plugin-import-to-const

将 import 导入变量替换为 const 命名变量 的 rollup 插件
TypeScript
6
star
40

nestjs-demo

multiple nestjs demos
TypeScript
6
star
41

github-actions-aliyun-demo

github-actions-aliyun-demo
HTML
5
star
42

github-actions-demo

自动部署到 github page
Vue
5
star
43

self-learning-english

分享一下自学英语的过程
5
star
44

eslint-config-airbnb-vue3-ts

结合了 airbnb 和 prettier 风格规范的 eslint 配置,适用于 vue3、js、ts 项目
JavaScript
4
star
45

nodejs-learning-notes

nodejs 学习笔记
JavaScript
4
star
46

woai3c.github.io

HTML
3
star
47

npm-proxy-cli

可以方便的通过命令行开启/关闭 npm http/https 代理,不支持 socks5。
JavaScript
3
star
48

toggle-router-abort-request

切换路由,取消请求-demo
JavaScript
2
star
49

type-challenges-answers

answers to type-challenges
2
star
50

webpack-demo

写一个 webpack loader 和 webpack plugin
JavaScript
2
star
51

tan-cli

tan-cli
JavaScript
2
star
52

monorepo-demo

monorepo-demo
JavaScript
1
star
53

apipost-api-generator

根据 apipost 导出的接口数据生成前端接口
TypeScript
1
star