浅谈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 相关文章推荐
select组合框option的捕捉实例代码
Sep 30 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
node.js中的fs.existsSync方法使用说明
Dec 17 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 Javascript
简单谈谈axios中的get,post方法
Jun 25 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 jQuery
clipboard在vue中的使用的方法示例
Oct 19 Javascript
vue组件从开发到发布的实现步骤
Nov 11 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
Vuejs中的watch实例详解(监听者)
Jan 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php文件系统处理方法小结
2016/05/23 PHP
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
一篇不错的Python入门教程
2007/02/08 Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
Python计算回文数的方法
2015/03/11 Python
python3使用PyMysql连接mysql数据库实例
2017/02/07 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
Django中的文件的上传的几种方式
2018/07/23 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
生产车间班组长岗位职责
2014/01/06 职场文书
运动会解说词100字
2014/01/31 职场文书
KTV的创业计划书范文
2014/02/02 职场文书
商务助理求职信范文
2014/04/20 职场文书
环保建议书600字
2014/05/14 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
校长一岗双责责任书
2015/05/09 职场文书
图书馆义工感想
2015/08/07 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书