Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Vue原理】看Vue源码,不会调试不行啊

【Vue原理】看Vue源码,不会调试不行啊

原创
作者头像
神仙朱
修改于 2019-08-05 03:34:35
修改于 2019-08-05 03:34:35
2K0
举报

写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧

研究基于 Vue版本 【2.5.17】

调试是程序猿必备的技能,如果你不会调试,你的下场就是.........

在这里插入图片描述
在这里插入图片描述

嗯,一样可以拿高工资............

|

不过据我了解,连张鑫旭大佬都喜欢使用 console.log 调试,但是你以为别人不用,你就以为别人不会吗,你真的太天真了....

在这里插入图片描述
在这里插入图片描述

下面的评论也是...看来同是天涯沦落人

在这里插入图片描述
在这里插入图片描述

我在项目中也是使用 console.log 调试啊,但是阅读源码不一样啊,你试试一直用 console.log 调试,搞不死你

在这里插入图片描述
在这里插入图片描述

好了,进入正题....

进入VSCode调试界面

是是是,让我们把眼睛移动到 VSCODE 左边活动栏 这边

1、有个小虫

在这里插入图片描述
在这里插入图片描述

,点击进入调试界面

2、或者按快捷键, ctrl+shift+D

错!其实第一步你应该打开 VSCode

创建调试配置文件

点击这个小设置按钮

在这里插入图片描述
在这里插入图片描述

之后,会弹窗,让你选择调试的类型,我们选择 Chrome ,骚年

在这里插入图片描述
在这里插入图片描述

Duang 的一声,你会发现自动生成了一个配置文件

在这里插入图片描述
在这里插入图片描述

然后这一步你就成功了呗....到下一步了

配置调试配置文件

配置文件有很多选项,我只给出最简单的可以使用的版本

代码语言:txt
AI代码解释
复制
{    
    "version": "0.2.0",    
    "configurations": [
        {            
            "type": "chrome",            
            "request": "launch",            
            "name": "调试 Vue 的调用走向",            
            "file": "${workspaceRoot}/index.html",
        }
    ]
}

解释一下 ( • ̀ω•́ )✧

type

是你调试类型,你调试的是网页,还是调试 node。

现在我们调试网页,所以选择 Chrome

name

调试名称,随你起名字,起 个 xxxxxx

file

本地文件路径,调试 本地 文件( workspaceRoot 是项目根目录,以此来确定你的 html 调试页面 相对路径)

开始调试

打断点

在 文件的 序号一栏 的左边,可以标记红色断点

然后可以在序号栏 左边,看到你打的所有断点

在这里插入代码片
在这里插入代码片
启动调试

点击下面的按钮,立即启动调试,等个几秒钟??

在这里插入图片描述
在这里插入图片描述
启动成功

然后你发现 谷歌浏览器被自动启动了,然后你就成功了兄弟

看得到 浏览器 的 url 是你的 硬盘绝对路径,也就是你在配置文件里面配置的

在这里插入图片描述
在这里插入图片描述

TIP:如果你启动调试期间出现什么问题,不要怕,度娘 或者 谷哥,资料很多,我也碰到很多问题,很正常

(~ ̄▽ ̄)~

调试工具栏

启动调试成功之后,你可以看到 这个工具栏的出现

在这里插入图片描述
在这里插入图片描述

我们来一个个看 每个按钮都是什么作用

在这里插入图片描述
在这里插入图片描述

继续,跳断点,从一个断点 跳到 另一个断点

在这里插入图片描述
在这里插入图片描述

单步跳过

跳过函数执行,就是 不进入函数内部,直接执行完函数,跳到函数下一个语句

TIP:但是如果你在这个函数的内部 打了断点,点击【单步跳过】你还是会进入函数内部,然后跳到函数内部最近那个断点那行

ヾ(●´∀`●)

在这里插入图片描述
在这里插入图片描述

单步调试,一条条语句 执行

在这里插入图片描述
在这里插入图片描述

单步跳出

跳出 单签函数体,如果当前调试已经进入了某个函数,那么立即执行完当前函数,并跳出这个函数

TIP:但是如果你在这个函数的内部 打了断点,你可能跳不出去,而是跳到这个函数 内部最近的一个断点

在这里插入图片描述
在这里插入图片描述

重启,重新启动调试,从头开始

在这里插入图片描述
在这里插入图片描述

停止,关闭调试

举栗子 (´・ᴗ・`)

准备好文件

index.html,越短越好

代码语言:txt
AI代码解释
复制
<script src="./index.js"></script>

index.js

代码语言:txt
AI代码解释
复制
function fn1(name){    
var result = name+" fn1 处理过 "
    fn2(result)
}
function fn2(arg){    
return arg +" fn2 处理过 "
}
fn1("hoho")

01 新建调试文件 launch.json

代码语言:txt
AI代码解释
复制
{    
       "version": "0.2.0",    
       "configurations": [
        {            
           "type": "chrome",            
           "request": "launch",            
           "name": "调试Demo",            
           "file": "${workspaceRoot}/index.html",
        }
    ]
}

02 打断点

在这里插入图片描述
在这里插入图片描述

03 启动调试,来到第一个断点

在这里插入图片描述
在这里插入图片描述

04 开始调试

先讲按钮使用流程

现在执行到 fn1 函数这一行,但是 fn1 还没执行

此时点击

在这里插入图片描述
在这里插入图片描述

执行 fn1,进入 fn1 函数内部

进入 fn1 之后

一直点击

在这里插入图片描述
在这里插入图片描述

,直到执行到 fn2 语句

像下面这样,有条黄线,就表示执行到哪条语句

在这里插入图片描述
在这里插入图片描述

1、点击

在这里插入图片描述
在这里插入图片描述

,会 立即执行完 fn2 ,不进入 fn2

2、点击

在这里插入图片描述
在这里插入图片描述

,会 进入 fn2

如果进入了 fn2 之后

点击

在这里插入图片描述
在这里插入图片描述

,会立即执行完 fn2 函数,跳出 fn2 函数内部

现在,我们

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三个按钮都使用过了,还剩

在这里插入图片描述
在这里插入图片描述

我们在 fn2 处打多一个一个断点,然后重启

在这里插入图片描述
在这里插入图片描述

你能看到 现在又是停到了 第一个断点处

在这里插入图片描述
在这里插入图片描述

此时,你的小手一按

在这里插入图片描述
在这里插入图片描述

,于是你便跳到了刚打的第二个断点

观察变量值

1、可以把鼠标移动到 某个变量上,会显示一个弹窗,弹窗内容是 变量的值

在这里插入图片描述
在这里插入图片描述

2、或者可以查看 左栏 调试栏的 变量

在这里插入图片描述
在这里插入图片描述
观察函数调用流程

同样是查看左边的 调试栏,中的调用堆栈,可以看到 函数调用的顺序

明显可以看到 先调用 fn1, 在调用 fn2

在这里插入图片描述
在这里插入图片描述

好的,如果你 有跟着做的,相信你已经入门了兄弟,是不是十分钟从入门到精通??

在这里插入图片描述
在这里插入图片描述

调试Vue准备

index.html

引用 vue 文件、引用 vue.test.js 文件

代码语言:txt
AI代码解释
复制
<!DOCTYPE html>
<html lang="en"><head></head><body>
    <div class="a" >
        <testb></testb>
    </div>
    <script src="./vue.js"></script>
    <script src="./vue.test.js"></script>
</body>
</html>

vue.js

去官网下载生产版本即可

vue.test.js

作用是调用vue,创建一个简单的应用,现在给一个简单的模板

代码语言:txt
AI代码解释
复制
new Vue({    
    el:".a",
    data(){        
        return {            
            name:1
        }
    },    
    methods:{
        getName(){            
            this.name="修改----我是父组件a"
        },
    },
})

现在,你可以尽情去 vue 里面去打断点啦,额..... 虽然现在你还不知道打什么断点,不过不用怕!后面每次讲一块内容,你就可以去自己尝试啦

在这里插入图片描述
在这里插入图片描述

结尾

好的,本次讲解完毕,调试就是这么简单,真的没有什么难的,

最后有什么不对的地方,感谢指出

希望本文会对你有帮助

好的,谢幕了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
八、通过断点调试观察JS执行过程
利用chrome开发者工具中的断点调试,我们能够一步步观察JavaScript的执行过程,直观感知函数调用栈、作用域链、变量对象、闭包、this等关键信息的变化。因此,断点调试对于快速定位代码错误,以及快速了解代码的执行过程有着非常重要的作用,这也是我们前端开发必不可少的一个高级技能。
用户6901603
2020/07/27
4.5K0
八、通过断点调试观察JS执行过程
VsCode 各场景高级调试技巧,有用!
VsCode自从诞生以来,以其各自优异的特性迅速走红。尤其是对于前端开发小伙伴来说,几乎成为必不可少的开发工具。所以,熟练掌握VsCode的各自使用技巧与调试技巧会让你的日常开发工作效率倍增。本文将会以大量图文的方式,从下面几个方面详细介绍VsCode的各种技巧:
@超人
2022/04/14
1.3K0
VsCode 各场景高级调试技巧,有用!
学习 koa 源码的整体架构,浅析koa洋葱模型原理和co原理
感兴趣的读者可以点击阅读。 其他源码计划中的有:express、vue-rotuer、redux、 react-redux 等源码,不知何时能写完(哭泣),欢迎持续关注我(若川)。
若川
2020/03/19
1.1K0
学会调试代码是件很重要的事
前几天打了个国外的比赛(corCTF)当时有道node的题,代码不长,但难度却不小,后来看wp发现要从node这些底层模块来看,这下调试代码就显得尤为重要,以前我写程序调试都只是打几个 print 来看如何,一直没有注意vscoded的 Debug 。
pankas
2022/09/21
3640
学会调试代码是件很重要的事
50行代码串行Promise,koa洋葱模型原来这么有趣?
大家好,我是若川,最近组织了源码共读活动《1个月,200+人,一起读了4周源码》,感兴趣的可以加我微信 ruochuan12 参与,长期交流学习。
若川
2021/09/27
4680
VSCode前端调试的几种场景
VSCode实现调试主要就是靠的编写lauch.json文件来实现。下面就来看看几种场景。
赤蓝紫
2023/03/29
1.3K0
VSCode前端调试的几种场景
新手向:前端程序员必学基本技能——调试JS代码
VSCode 调试 JS 的方法有很多,目前比较推荐的就是无需配置的 auto-attach。
若川
2021/11/18
8120
新手向:前端程序员必学基本技能——调试JS代码
如何调试vue3源码?
想获取vue3的源码,需要直接从github上vue3的仓库获取,vue3github源码地址为:
CherishTheYouth
2022/02/19
2.1K0
进阶 | 在chrome开发者工具中观察函数调用栈、作用域链与闭包
在前端开发中,有一个非常重要的技能,叫做断点调试。 在chrome的开发者工具中,通过断点调试,我们能够非常方便的一步一步的观察JavaScript的执行过程,直观感知函数调用栈,作用域链,变量对象,闭包,this等关键信息的变化。因此,断点调试对于快速定位代码错误,快速了解代码的执行过程有着非常重要的作用,这也是我们前端开发者必不可少的一个高级技能。 当然如果你对JavaScript的这些基础概念[执行上下文,变量对象,闭包,this等]了解还不够的话,想要透彻掌握断点调试可能会有一些困难。但是好在在前
用户1097444
2022/06/29
2.8K0
进阶 | 在chrome开发者工具中观察函数调用栈、作用域链与闭包
【Html.js——功能实现】产品360度展示(蓝桥杯真题-18557)【合集】
封装一个支持异步的 pipeline 管道函数,能够按顺序执行一系列异步操作,每个异步操作的结果将作为下一个异步操作的输入。
Rossy Yan
2025/02/21
1120
【Html.js——功能实现】产品360度展示(蓝桥杯真题-18557)【合集】
JavaScript第五节
全局作用域 :在script标签内,函数外的区域就是全局作用域,在全局作用内声明的变量叫做全局变量 。全局变量可以在任意地方访问。
用户3461357
2019/08/02
6770
程序断点
程序断点是指由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。所谓断点就是程序被中断的地方,这个词对于解密者来说是再熟悉不过了。那么什么又是中断呢?中断就是由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。打个比方:你正在上班,突然有同学打电话告诉你他从外地坐火车过来,要你去火车站接他。然后你就向老板临时请假,赶往火车站去接同学,接着将他安顿好,随后你又返回公司继续上班,这就是一个中断过程。我们解密的过程就是等到程序去获取我们输入的注册码并准备和正确的注册码相比较的时候将它中断下来,然后我们通过分析程序,找到正确的注册码。所以我们需要为被解密的程序设置断点,在适当的时候切入程序内部,追踪到程序的注册码,从而达到crack的目的。
狼啸风云
2019/10/22
2.3K0
程序断点
Vue笔记:使用 VS Code 断点调试
直接在 Chrome 的调试窗口中调试 Vue 代码有诸多不便, 好在 Visual Studio Code 中提供了 Debugger for Chrome 插件,能够通过配置直接在 VS Code 断点调试代码, 并且在 VS Code 的调试窗口看到 Chrome 中 console 相同的值,这篇文章就来介绍一下这个配置过程。
朝雨忆轻尘
2019/06/19
3K0
Vue笔记:使用 VS Code 断点调试
Vue 常用指令(上)
作用:使用 v-on 指令绑定 DOM 事件,并在事件被触发时执行一些 JavaScript 代码。
RiemannHypothesis
2022/11/05
7780
【Vue】手拉手带你走进Vue大门(概念&指令)
组件化:一个组件会包含(HTML+CSS+JS) 把一个完整的页面拆分成多个组件构成。(.vue)
且陶陶
2023/04/12
4070
【Vue】手拉手带你走进Vue大门(概念&指令)
【JavaScript】 进阶教程 施工中~
每个函数都有一个prototype属性。它默认指向一个Object空对象(即成为:原型对象)
杨丝儿
2022/02/24
1.4K0
【JavaScript】 进阶教程 施工中~
React Native程序调试
在做React Native开发时,少不了的需要对React Native程序进行调试。调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。 Developer Menu Android模拟器: 可以通过Command⌘ + M 快捷键来快速打开Developer Menu。也可以通过模拟器上的菜单键来打开。 iOS模拟器: 可以通过Command⌘ + D快捷键来快速打开Developer Menu。 在真机上开启Developer Menu: 在真机上你可以通过摇动手机来开启
xiangzhihong
2018/01/26
3.9K0
想看源码但是无从下口怎么办?
相信不少同学都有欧阳这种情况,年初的时候给自己制定了一份关于学习英语和源码的详细年度计划。但是到了实际执行的时候因为各种情况制定的计划基本都没有完成,年底回顾时发现年初制定的计划基本都没完成。痛定思痛,第二年年初决定再次制定一份学习英语和源码的详细年度计划,毫无疑问又失败了。
前端欧阳
2024/07/25
2670
想看源码但是无从下口怎么办?
这次把 javascript 闭包给你讲的明明白白
就是因为你的left写在了click回调函数里面。因为每点击一次就会创建一块function空间,里面left变量去定时改变style,每改变一次style.left就会导致一次回流从而再渲染一次。每次点击left初始值为1,上一次的已经为+了很多次,上上次的已经为+了非常多次。渲染的时候你就会看到一会1px一会很多px的鬼畜情况,也就是动画抖动(渲染一次抖动一次)。
砖业洋__
2023/05/06
4300
这次把 javascript 闭包给你讲的明明白白
pycharm的调试功能_pycharm运行调试配置
Debug调试,是对于学习编程人员来说是一项重要的技能。只有当你学会 debug 了以后,才可以正确的知道程序的走向流程是如何的,DEBUG是排除程序故障的意思。debug 则是通过工具来对代码进行调试,进而一步步找出程序中出现 bug 的位置,也就是程序中具体错误代码的位置。
全栈程序员站长
2022/09/25
2.3K0
pycharm的调试功能_pycharm运行调试配置
相关推荐
八、通过断点调试观察JS执行过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档