浅谈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 相关文章推荐
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 Javascript
JavaScript几种形式的树结构菜单
May 10 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 Javascript
JS实现点击下载的小例子
Jul 10 Javascript
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
javascript读取Xml文件做一个二级联动菜单示例
Mar 17 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
Dec 08 Javascript
Angular2数据绑定详解
Apr 18 Javascript
使用canvas实现一个vue弹幕组件功能
Nov 30 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
May 24 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 Javascript
前端如何实现动画过渡效果
Feb 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
PHP 已经成熟
2006/12/04 PHP
php 文本文件的读取效率
2012/02/10 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
Smarty3配置及入门语法
2017/02/22 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
安装dbus-python的简要教程
2015/05/05 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
遗传算法之Python实现代码
2017/10/10 Python
python机器学习之神经网络(三)
2017/12/20 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
pandas的qcut()方法详解
2019/07/06 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
关于VPN
2012/06/10 面试题
致裁判员加油稿
2014/02/08 职场文书
社会调查研究计划书
2014/05/01 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript