首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
手写Vue2源码
SoliviorX
创建于2021-12-31
订阅专栏
通过手写Vue2源码,实现vue大部分主要功能
等 5 人订阅
共12篇文章
创建于2021-12-31
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
手写Vue2源码(十二)—— keep-alive
keep-alive作为一个全局组件,在初始化全局api时,创建并合并到Vue.options.components中;keep-alive缓存的是组件的vnode,使用了LRU算法
手写Vue2源码(十一)—— diff算法
vue2的diff算法,采用同级比较,采用双指针比较;对于子节点,使用patch递归比较;如果标签带有key,可提高diff的准确性和性能。
手写Vue2源码(十)—— 组件原理
全局组件Vue.component(),实质是调用Vue.extend(),以及往Vue.options中添加components属性;每个组件实质都是一个vue实例,渲染时会执行子组件的$mout
手写Vue2源码(九)—— 混入原理与生命周期
Vue.mixin(mixin)会把mixin合并到全局配置Vue.options;组件实例的options会与构造函数的options合并。在vue执行的不同阶段调用相应的生命周期钩子函数。
手写Vue2源码(八)—— 计算属性
计算属性需要进行劫持代理,并且单独创建watcher,依赖项需要收集computed watcher和渲染watcher,另外计算属性可以利用watcher.value进行缓存。
手写Vue2源码(七)—— 侦听属性
侦听属性本质就是创建用户watcher;用户watcher与渲染watcher有所不同,主要区别在于第二个参数exprOrFn以及options;在this.get()中收集依赖,在run中执行回调
手写Vue2源码(六)—— 异步更新及nextTick
vue通过异步更新更好地优化性能;在异步操作中实现了nextTick,并将该方法绑定到vue原型上,可以在开发时手动调用vm.$nextTick()
手写Vue2源码(五)—— 观察者模式
用观察者模式实现数据响应式更新;主要涉及watcher、dep、数据劫持、依赖收集、通知更新等方面,逻辑较为复杂,通过手写源码厘清它们之间的关系。
手写Vue2源码(四)—— 初次渲染
初次渲染执行vm._updata(vm._render());vm._render()执行render函数,生成VNode;vm._updata(vnode)中调用了patch()方法,生成真实DOM
手写Vue2源码(三)—— 模板编译
对于template模板需要编译成render函数;主要分成三步:1. 通过parse解析成AST树;2. 通过optimize进行优化; 3.将AST树转化成render函数
手写Vue2源码(二)—— 数据劫持
对象和数组分别进行劫持;对象采用递归 + Object.defineProperty;数组采用原型继承、修改原型方法、新增元素劫持、遍历数组+递归劫持;Vue2数据劫持的缺点及开发注意事项
手写Vue2源码(一)—— 环境搭建
前言 通过手写Vue2源码,更深入了解Vue; 在项目开发过程,一步一步实现Vue核心功能,我会将不同功能放到不同分支,方便查阅; 另外我会编写一些开发文档,阐述编码细节及实现思路; 源码地址:手写V