热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

依据调试东西看Vue源码之生命周期(一)

因为工作中常常运用chrome调试东西来定位题目,觉着这东西真的挺好用。倏忽有一天遭到启示,想着:“我进修源码是不是也能够经由历程调试东西呢?”因而,诞生了这篇文章来纪录我的一些进

因为工作中常常运用
chrome调试东西来定位题目,觉着这东西真的挺好用。倏忽有一天遭到启示,想着:“我进修源码是不是也能够经由历程调试东西呢?” 因而,诞生了这篇文章来纪录我的一些进修效果,后续应该会写成一个系列。

浏览源码的一些罕见体式格局

这里枚举一些浏览源码的一些罕见体式格局:

  1. 直接从github上检察某一个版本的源码,针对某些功用的完成举行理会
  2. 从第一个commit最先看

上面是我所知的一些浏览源码的罕见体式格局,然则以上两种体式格局,无论是哪种,都需要对flow轻微熟习一些,不然看着多别扭(固然啦,假如你直接下载源码到当地转码今后逐步看,那只能当我没说);同时,从第一个commit最先看的话未免太消磨时刻,置信在坐的列位都不是很情愿。

那运用chrome调试东西看源码都有啥长处呢?

  1. chrome调试东西里的代码都是经由转码的,浏览本钱相对较低
  2. 打下断点以后能够清楚的看到某个功用的完成步骤,跟直接浏览源码比拟,不必往返切换文件夹,从而能越发集合自身的注意力

进入正题

提及Vue,起首必不可少的就是讲Vue的生命周期了,不仅是口试的时刻常常会被问到这个题目,开辟的时刻也常常会在生命周期这里碰到一些

实行递次

Vue 中罕见的生命周期及对应递次: beforeCreate —> created —> beforeMount —> mounted —> beforeDestroy —> destroyed,官网有张则很清楚的描写了这个历程:
《依据调试东西看Vue源码之生命周期(一)》

接下来让我们在上面对应的钩子函数里打下一个断点
《依据调试东西看Vue源码之生命周期(一)》
我们能够发明,beforeCreate —> created —> beforeMount —> mounted 这几个钩子函数都是挨个实行的,文档诚不我欺!
然则仔细的同砚能够发明,beforeCreate这个钩子函数竟然实行了两次!为何?是Vue的bug吗?明显不是!
《依据调试东西看Vue源码之生命周期(一)》
经由历程两次实行,我们能够看到两次vm对象是由差别的组织函数new出来的,一个是Vue,别的一个则是VueComponent
经由历程视察右侧的挪用客栈能够发明的确是存在VueComponent这个组织函数的,详细是用来干吗的我们先不穷究。怎样去定位到这个题目呢?起首先在VueComponent这里打下一个断点,从新革新浏览器并检察右侧的挪用客栈
《依据调试东西看Vue源码之生命周期(一)》

本来,两次beforeCreate钩子函数分别是Vue自身和VueRouter实行的(终究破案了…)

除了这几个钩子函数之外,另有beforeDestroydestroyed这两个钩子,望文生义,应该是页面烧毁的时刻才会实行,所以我们在上面打了断点进去也没有看到这两个钩子触发了。
别的另有beforeUpdateupdated两个钩子,字面意义就是“更新前”与“更新后”嘛。一样,上面的断点也没有在这里停下来。为了考证它们之间的实行递次,我在这个项目内里加了几句代码:

data () {
return {
lists: [ 1, 2, 3, 4 ]
}
},
methods: {
handleClick () {
let len = this.lists.length
this.lists.push(this.lists[len - 1] + 1)
}
}

然后革新页面,点击这个按钮能够看到实行了beforeUpdate钩子,摊开这个断点今后,页面数据革新,断点停在了updated这个钩子函数中。

末了,我们回过头来再看这张图片,是不是是对全部生命周期的流程清楚多了呢?
《依据调试东西看Vue源码之生命周期(一)》
未完待续…
扫描下方的二维码或搜刮「tony先生的前端补习班」关注我的微信民众号,那末就能够第一时刻收到我的最新文章。
《依据调试东西看Vue源码之生命周期(一)》


推荐阅读
  • 媒介本文的前身是源自github上的项目awesome-github-vue,但由于该项目上次更新时候为2017年6月12日,许多内容早已逾期或是许多近期优异组件未被收录,所以小肆 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
  • 先看看ElementUI里关于el-table的template数据结构:<template><el-table:datatableData><e ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
author-avatar
嘉洲仔-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有