vue 框架原理
参考:https://segmentfault.com/a/1190000006599500#articleHeader4
记录自己的理解:
核心的响应原理通过Object.defineProperty来实现,这个api支持ie9及以上。这也就意味着vue不能应用于ie9以下
Vue实例的生命周期:
https://cn.vuejs.org/v2/guide/instance.html#%E5%AE%9E%E4%BE%8B%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F
https://segmentfault.com/a/1190000008010666
Vue文档中组件那一块提到:
所有的 Vue 组件同时也都是 Vue 的实例,所以可接受相同的选项对象 (除了一些根级特有的选项) 并 提供相同的生命周期钩子
以上提到的一些区别,实际上只有一个
构造 Vue 实例时传入的各种选项大多数都可以在组件里使用。只有一个例外:
data
必须是函数
这里进行一些摘要:
- 数据劫持
- 判断el是否要进行自动挂载
- 进入编译阶段。对模板进行编译,把template转换乘render函数来执行,创建虚拟dom,以及对应的dom元素(保存到vm.$el中)
- 把dom元素添加到页面上,完成挂载
- 数据更新,触发虚拟dom的diff和patch,re-render
- 组件销毁。
各种生命周期钩子就穿插在以上步骤中执行。
beforecreated
:el 和 data 并未初始化,可以加个loadingcreated
:完成了 data 数据劫持,el没有beforeMount
:完成了 el 和 data 初始化mounted
:完成挂载,向后端请求数据
对于父子组件的生命周期,在父实例的beforeMount之后开始执行子实例的声明周期,子实例的mounted执行后,才去执行父实例的mounted,销毁也是触发子实例的destroy,后执行父的。
将mvvm与虚拟dom结合起来理解,就是这样一个图:
对于挂载后的流程:
vue实例上的属性被修改,setter被执行,对应的watcher执行,watcher触发重新渲染,进入虚拟dom的diff和patch,页面更新
vue 框架原理的更多相关文章
- vue.js框架原理浅析
vue.js是一个非常优秀的前端开发框架,不是我说的,大家都知道. 首先我现在的能力,独立阅读源码还是有很大压力的,所幸vue写的很规范,通过方法名基本可以略知一二,里面的原理不懂的地方多方面查找资料 ...
- 如何在 vuex action 中获取到 vue 实例
问题:在做运营开发工具的时候 我想要请求后台服务器保存成功后 弹出一个弹框(饿了吗 的 message 弹框), 由于$message 是挂在 Vue原型链上的方法 (Vue.prototype.$m ...
- Vue组件间通信6种方式
摘要: 总有一款合适的通信方式. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的 ...
- [转] Vue原理解析——自己写个Vue
一.Vue对比其他框架原理 Vue相对于React,Angular更加综合一点.AngularJS则使用了“脏值检测”. React则采用避免直接操作DOM的虚拟dom树.而Vue则采用的是 Obje ...
- Vue数据通信详解
如果有需要源代码,请猛戳源代码 希望文章给大家些许帮助和启发,麻烦大家在GitHub上面点个赞!!!十分感谢 一.前言 组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着 ...
- Vue原理解析——自己写个Vue
Vue由于其高效的性能和灵活入门简单.轻量的特点下变得火热.在当今前端越来越普遍的使用,今天来剖析一下Vue的深入响应式原理. tips:转自我的博客唐益达博客,此为原创.转载请注明出处,原文链接 一 ...
- 基于vue(element ui) + ssm + shiro 的权限框架
zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目 ...
- Vue.js 和 MVVM 小细节
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
随机推荐
- python 迭代器 Iterator
一.可迭代对象定义 可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str.bytes.bytearray等: 一类是generator, ...
- Python 字符串太长分行写
原文:https://blog.csdn.net/peng__dada/article/details/79138135 #第一种:三个单引号 print '''我是一个程序员 我刚开始学 ...
- iOS 自建企业级应用(In-House)分发平台
注意事项 自建分发平台,首先需要有一个可以提供下载功能的服务器,而且服务器需要支持HTTPS协议! 其实,使用七牛云就可以完成这些操作. 推荐方案 七牛云实践方案简述(感兴趣的朋友可以和我交流具体的实 ...
- SpringBoot | 读取配置文件信息
server.port=8081 #修改端口号 server.servlet.context-path= /SpringBoot #修改URL #自定义配置 tz.name = xiaoming tz ...
- windows 异步通知I/O模型与重叠I/O模型
一.异步IO模型(asynchronous IO) (1)什么是异步I/O 异步I/O(asynchronous I/O)由POSIX规范定义.演变成当前POSIX规范的各种早起标准所定义的实时函数中 ...
- Hdu 2089 不要62 (数位dp入门题目)
题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...
- Codeforces Round #261 (Div. 2) D
Description Parmida is a clever girl and she wants to participate in Olympiads this year. Of course ...
- queue+模拟 Codeforces Round #304 (Div. 2) C. Soldier and Cards
题目传送门 /* 题意:两堆牌,每次拿出上面的牌做比较,大的一方收走两张牌,直到一方没有牌 queue容器:模拟上述过程,当次数达到最大值时判断为-1 */ #include <cstdio&g ...
- 题解报告:hdu 2141 Can you find it?(二分)
Problem Description Give you three sequences of numbers A, B, C, then we give you a number X. Now yo ...
- Joystick
Joystick相当于5个按键的集合,向上.下.左.右.中间5个方向接通,经常用于游戏场合.