Skip to content
forked from woai3c/mini-vue

模仿 Vue1.0 写的迷你版 Vue

Notifications You must be signed in to change notification settings

yzw2017/mini-vue2

 
 

Repository files navigation

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

About

模仿 Vue1.0 写的迷你版 Vue

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 89.0%
  • HTML 11.0%