前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >迷你版Vue--学习如何造一个Vue轮子

迷你版Vue--学习如何造一个Vue轮子

作者头像
谭光志
发布2020-09-28 10:33:17
5330
发布2020-09-28 10:33:17
举报
文章被收录于专栏:编程技术分享编程技术分享

项目地址

Vue1和Vue2的区别

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

文档

MVVM

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

配套插件

mini-vuex

实现一个迷你版的vue

实现的功能

全局方法
代码语言:javascript
复制
// 继承MiniVue 产生一个新的子类构造函数
MiniVue.extend
// 在实例化过程完成后运行
MiniVue.nextTick
// 注册自定义指令
MiniVue.directive
// 过滤器
MiniVue.filter 
// 组件 包括slot props
MiniVue.component
// 插件
MiniVue.use
// 混入
MiniVue.mixin
mixin filter component也可以局部注册 在new一个实例时提供以下选项即可
代码语言:javascript
复制
filters
components
mixin
实例方法
代码语言:javascript
复制
vm.$watch
vm.$set
vm.$delete
vm.$on
vm.$once
vm.$off
vm.$emit
vm.$nextTick
指令
代码语言:javascript
复制
v-text
v-html
v-show
v-if
v-else
v-for
v-on
v-bind
v-model
计算属性

计算属性用法也和Vue一样

生命周期
代码语言:javascript
复制
init
created
beforeCompiled
compiled
destroyed

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

如何阅读源码

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

Vue源码要怎么看呢

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

Vue1.0模块

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

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

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

在这里插入图片描述
在这里插入图片描述

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Vue1和Vue2的区别
  • 文档
  • MVVM
  • 配套插件
  • 实现一个迷你版的vue
    • 实现的功能
      • 全局方法
      • mixin filter component也可以局部注册 在new一个实例时提供以下选项即可
      • 实例方法
      • 指令
      • 计算属性
      • 生命周期
    • 以上实现的功能用法和Vue一模一样
      • 如何阅读源码
        • Vue源码要怎么看呢
          • Vue1.0模块
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档