迷你版Vue--学习如何造一个Vue轮子
时间:2022-07-25
本文章向大家介绍迷你版Vue--学习如何造一个Vue轮子,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Vue1和Vue2的区别
其实Vue1和Vue2最大的区别就是Vue2多了一个虚拟DOM,其他的区别都是很小的。所以理解了Vue1的源码,就相当于理解了Vue2,中间差了一个虚拟DOM的Diff算法
文档
MVVM
配套插件
实现一个迷你版的vue
实现的功能
全局方法
// 继承MiniVue 产生一个新的子类构造函数
MiniVue.extend
// 在实例化过程完成后运行
MiniVue.nextTick
// 注册自定义指令
MiniVue.directive
// 过滤器
MiniVue.filter
// 组件 包括slot props
MiniVue.component
// 插件
MiniVue.use
// 混入
MiniVue.mixin
mixin filter component也可以局部注册 在new一个实例时提供以下选项即可
filters
components
mixin
实例方法
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
我们来看看他们之间的关系
如果不是想自己实现一个mvvm框架 Vue的源码不用细读 只要明白主线的运行过程就行了 想要熟练使用Vue看官方文档即可 想了解主线流程的 可以看看我的v0.1版本 300行代码 完整的实现了双向数据绑定的流程 还有3条指令的实现过程 其实其他的指令即使没实现 也没什么关系 主流程明白即可 MiniVue v0.1
- 基于编辑距离来判断词语相似度方法(scala版)
- 运算符优先级
- 腾讯云联手腾讯安全玄武实验室,提供「应用克隆」漏洞免费检测服务
- 1.注册或登录页面设计:UILabel,UIButton,UITextField
- 和为S的两个数字VS和为s的连续正数序列
- HANDLE
- Kafka的基本概念与安装指南(单机+集群同步)
- 科技专栏:001 机器人为美国带来大量失业人口,我们怎么办?
- HBase跨地区机房的压测小程序——从开发到打包部署(图文版)
- 从零新建小程序
- 计算机网络基础回顾
- iOS应用开发:什么是ARC
- 通过两个小栗子来说说Java的sleep、wait、notify、notifyAll的用法
- 用HPS游戏充值是一种什么样的体验?
- 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 数组属性和方法