浅谈Vue.js 1.x 和 2.x 实例的生命周期


Posted in Javascript onJuly 25, 2017

在Vue.js中,在实例化Vue之前,它们都是以HTML的文本形式存在文本编辑器中。当实例化后将经历创建、编译、销毁三个主要阶段。

以下是Vue.js 1.x 实例的生命周期图示:

浅谈Vue.js 1.x 和 2.x 实例的生命周期

Vue.js 1.x 的生命周期钩子

1. init

在实例开始初始化时同步调用。此时数据观测、事件和Watcher都尚未初始化。

2. created

在实例化创建之后同步调用。此时实例已经结束解析选项,已建立:数据绑定、计算属性、方法、Watcher/事件回调,但是还没有开始DOM编译,$el还不存在。

3. beforeCompile

在编译开始前调用。

4. compiled

在编译结束后调用。此时所以指令已经生效,因而数据的变化将触发DOM更新,但是不保证$el已插入文档。

5. ready

在编译结束和$el第一次插入文档后调用,如在第一次attached钩子之后调用。

6. attached

vm.$el 插入 DOM 时调用。

7. detached

在 vm.$el 从 DOM 中删除时调用。必须是由指令或实例方法删除,直接操作 vm.$el 不会触发。

8. beforeDestroy

在开始销毁实例时调用,此时实例仍然有功能。

9. destroyed

在实例被销毁之后调用,此时所有的绑定和实例的指令已经解绑,所有子实例已经被销毁。

以下是Vue.js 2.x 实例的生命周期图示:

浅谈Vue.js 1.x 和 2.x 实例的生命周期

Vue.js 2.x 的生命周期钩子

1. 废弃ready,新增mounted

在1.x版本中,ready钩子函数的调用时机是第一次插入DOM后,但是2.0不一定只执行在浏览器中,也可能在服务端渲染,所以废弃ready并新增mounted钩子函数,mounted钩子函数调用时机在DOM树生成之后。

2. 废弃beforeCompile

在1.x版本中,调用beforeCompile钩子函数是在模板编译前,2.0版本中废弃并用created代替。

3. 废弃compiled

在1.x版本中,调用compiled是在编译模板之后、DOM创建之前,2.0版本中废弃并用mounted代替。

4. 废弃attached

在1.x版本中,调用attached是在插入DOM时,2.0版本中不一定会创建真实的DOM,2.0版本废弃。

5. 废弃detached

在1.x版本中,调用detached是移除DOM时,2.0版本中不一定会创建真实的DOM,2.0版本废弃。

6. 新增beforeCreate

2.0版本中新增beforeCreate,在实例初始化之后,数据观察(data observer)和event/watcher事件配置之前被调用。

7. 新增beforeMount

2.0版本中新增beforeMount,是在Watcher之前、模板编译成render方法之后调用,相关render首次被调用。该钩子函数在服务器渲染期间不被调用。

8. 新增beforeUpdate

2.0版本中新增beforeUpdate,是在DOM树生成之前、虚拟DOM树生成之后调用,调用条件是这个vm实例已经mounted过。该钩子函数在服务器渲染期间不被调用。

9. 新增updated

2.0版本中新增updated,在DOM树生成之后调用,调用条件是这个vm实例已经mounted过。该钩子函数在服务器渲染期间不被调用。

10. 新增activated

2.0版本中新增activated,在DOM树生成之后,调用条件是keep-alive组件。该钩子函数在服务器渲染期间不被调用。

11. 新增deactivated

2.0版本中新增deactivated,在Vue实例销毁时调用,调用条件是keep-alive组件。该钩子函数在服务器渲染期间不被调用。

以上这篇浅谈Vue.js 1.x 和 2.x 实例的生命周期就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery获取特定name所有选中的checkbox,支持IE9标准模式
Mar 18 Javascript
JavaScript自执行闭包的小例子
Jun 29 Javascript
jQuery简单实现banner图片切换
Jan 02 Javascript
js生成缩略图后上传并利用canvas重绘
May 15 Javascript
js获取日期:昨天今天和明天、后天
Jun 11 Javascript
jQuery截取指定长度字符串的实现原理及代码
Jul 01 Javascript
jQuery提示效果代码分享
Nov 20 Javascript
js中对函数设置默认参数值的3种方法
Oct 23 Javascript
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
js HTML5 canvas绘制图片的方法
Sep 08 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 #Javascript
基于JavaScript实现百度搜索框效果
Jun 28 #Javascript
深入理解基于vue-cli的vuex配置
Jul 24 #Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 #Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 #Javascript
关于vue-resource报错450的解决方案
Jul 24 #Javascript
JavaScript中的FileReader图片预览上传功能实现代码
Jul 24 #Javascript
You might like
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
php命名空间学习详解
2014/02/27 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
php中的观察者模式简单实例
2015/01/20 PHP
php实现插入排序
2015/03/29 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
浅谈Python的list中的选取范围
2018/11/12 Python
Python列表list排列组合操作示例
2018/12/18 Python
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
灵泰克Java笔试题
2016/01/09 面试题
2014世界杯球队球队口号
2014/06/05 职场文书
助学贷款贫困证明
2014/09/23 职场文书
招商引资工作汇报
2014/10/28 职场文书
导游词之无锡梅园
2019/11/28 职场文书
Python闭包的定义和使用方法
2022/04/11 Python
详解SQL的窗口函数
2022/04/21 Oracle