浅谈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 相关文章推荐
Extjs中使用extend(js继承) 的代码
Mar 15 Javascript
js创建子窗口并且回传值示例代码
Jul 02 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
Sep 01 Javascript
JavaScript实现简单获取当前网页网址的方法
Nov 09 Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 Javascript
vue使用iframe嵌入网页的示例代码
Jun 09 Javascript
React Component存在的几种形式详解
Nov 06 Javascript
js实现简单模态框实例
Nov 16 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
koa2+vue实现登陆及登录状态判断
Aug 15 Javascript
JavaScript RegExp 对象用法详解
Sep 24 Javascript
JS异步宏队列微队列原理详解
Sep 09 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
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
jQuery的三种$()
2009/12/30 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
屏蔽IE弹出"您查看的网页正在试图关闭窗口,是否关闭此窗口"的方法
2013/12/31 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
一些Python中的二维数组的操作方法
2015/05/02 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
土建资料员岗位职责
2014/01/04 职场文书
大学生村官典型材料
2014/01/12 职场文书
社区春季防火方案
2014/06/02 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
员工教育培训协议书
2014/09/27 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
年度考核表个人总结
2015/03/06 职场文书
800字作文之大雪
2019/12/04 职场文书