浅谈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 相关文章推荐
bcastr2.0 通用的图片浏览器
Nov 22 Javascript
微博@符号的用户名提示效果。(想@到谁?)
Nov 05 Javascript
自动最大化窗口的Javascript代码
May 22 Javascript
js脚本获取webform服务器控件的方法
May 16 Javascript
通过js来制作复选框的全选和不选效果
May 22 Javascript
jquery+php实现搜索框自动提示
Nov 28 Javascript
JavaScript记录光标在编辑器中位置的实现方法
Apr 22 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
webpack打包js的方法
Mar 12 Javascript
用Node编写RESTful API接口的示例代码
Jul 04 Javascript
微信小程序实现点赞、取消点赞功能
Nov 02 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 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下实现农历日历的代码
2007/03/07 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
Vue实现省市区三级联动
2020/12/27 Vue.js
Python使用django获取用户IP地址的方法
2015/05/11 Python
Django实现快速分页的方法实例
2017/10/22 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
Python递归实现打印多重列表代码
2020/02/27 Python
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
信息管理与信息系统专业求职信
2014/06/21 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
个人合伙协议书范本
2014/10/14 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
正则表达式拆分url实例代码
2022/02/24 Java/Android
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫