网站首页 > 技术文章 正文
前言
《vue 基础》系列是再次回炉 vue 记的笔记,除了官网那部分知识点外,还会加入自己的一些理解。(里面会有部分和官网相同的文案,有经验的同学择感兴趣的阅读)
平时开发中,我真的不太使用生命周期相关的方法。但必须明确的是,生命周期在整个 vue 具有非常重要的作用,如果你了解它将对理解整个 vue 会更容易;同时在遇到问题时也能有个导向性的判断。
此篇简单说下生命周期的过程,以及方法调用。
生命周期的整个过程
借用 vue 官网的图,仔细全览下基本就对生命周期的过程有个粗略的认识了。
我这里没必要重复细说了,按我自己理解讲这个过程:
- new 一个 Vue 实例
- 初始化 event($on、$off 等) 和 lifecycle
- 触发钩子 beforeCreate
- 初始化 inject、data、computed、watch、provide
- 触发钩子 created
- 判断 el 属性(是否调用 $mount,你在源码能看到两个 $mount 的声明),判断 template 属性(决定渲染模板)
- 触发钩子 beforeMount
- 替换 el 标签内容,实现元素挂载
- 触发钩子 mounted
- definedReactive 响应式的定义在初始化的时候已经完毕了,当数据更新,触发钩子 beforeUpdate 、 updated
- 销毁时,触发钩子 beforeDestroy
- 移除事件监听、绑定数据
- 销毁完, 触发钩子 destroyd
钩子触发顺序
这个例子,调用了所有生命周期的钩子,用来说明他们的执行顺序(注意 activated 和 deactivated 是 keepalive 专用的):
直接看下图,当 created 时,开启一个 timer 定时器用来确认组件的销毁情况。
有什么细节问题
beforeCreate 和数据响应式
因为 beforeCreate 是最开始初始化的,数据响应和相关事件和监听在其后,所以有类似功能处理需要避免。
created 获取不到 dom 元素
它是指完成了数据观察、相关属性方法的计算,并没有把我们的模板替换到 html 上,不要试图在这个钩子里调用 dom 相关的 api。
如果你想获取整个客户端的高度的话,建议放在 mounted 中。
不要忘记移除掉定时器等
beforeDestroy 不是没有用,在这环节中,vue 的实例仍然有效,你可以移除定义的 timer ,以免引起不必要的错误。
总结
生命周期贯穿整个 vue 的设计思想,理解好它能写出让别人能更容易“看得懂的”代码,千万不能张冠李戴的乱用。
另外上面那张 vue 整个生命周期的图 ,正如官网所说,随着我们使用的深入,它的意义会越来越大。
关于我
一位“前端工程师”,乐于实践,并分享前端开发经验。
如果有问题或者想法,欢迎各位评论留言,愿大家共同进步。
关注【前端雨爸】,查阅更多前端技术心得。
猜你喜欢
- 2025-06-24 服务端性能测试实战3-性能测试脚本开发
- 2025-06-24 跨标签页通信(六):Cookie(cookie跨页面)
- 2025-06-24 崩溃!代码总掉链子?6 个 JavaScript 技巧助你稳操胜券
- 2025-06-24 如何取消一个已经开始的 JavaScript Promise
- 2025-06-24 Web页面如此耗电!到了某种程度,会是大损失
- 2025-06-24 setTimeout 出大 bug?为什么需要 setBigTimeout?
- 2025-06-24 悠然!午休十分钟分清 Vue 的 watch 和 computed,面试不发怵
- 2025-06-24 科普:CPU空闲时在忙什么?(cpu空闲温度)
- 2025-06-24 html5大神结合js带你研究古老读心术,你的心思早被猜透
- 2025-06-24 JWT + Refresh + SSO模版(jwt demo)
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 566℃Oracle分析函数之Lag和Lead()使用
- 564℃几个Oracle空值处理函数 oracle处理null值的函数
- 549℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 545℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 543℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 536℃【数据统计分析】详解Oracle分组函数之CUBE
- 526℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 518℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)