浅谈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 选择器部分整理
Oct 28 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 Javascript
jQuery 三击事件实现代码
Sep 11 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
Sep 29 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
Mar 08 Javascript
微信支付 JS API支付接口详解
Jul 11 Javascript
Vue中如何实现轮播图的示例代码
Jul 27 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 Javascript
详解Vue中CSS样式穿透问题
Sep 12 Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 Javascript
JavaScript监听一个DOM元素大小变化
Apr 26 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
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
php实现无限级分类
2014/12/24 PHP
javascript 节点遍历函数
2010/03/28 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
Python之指数与E记法的区别详解
2019/11/21 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
大学生旅游业创业计划书
2014/01/29 职场文书
人事专员职责
2014/02/22 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android