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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何绘制符合规范的流程图表_流程图画法规范
流程图可以简单地描述一个过程,是对过程、算法、流程的一种图像表示,在技术设计、交流及商业简报等领域有广泛的应用。流程图可分为:数据流程图和作业流程图。
全栈程序员站长
2022/09/20
4.1K0
如何绘制符合规范的流程图表_流程图画法规范
关于写作那些事之快速上手Mermaid流程图
本文主要介绍了如何快速上手 Mermaid 流程图,不用贴图上传也不用拖拉点拽绘制,基于源码实时渲染流程图,操作简单易上手,广泛被集成于主流编辑器,包括 markdown 写作环境.
雪之梦技术驿站
2020/05/07
3.6K0
关于写作那些事之快速上手Mermaid流程图
Markdown的时序图、流程图、和甘特图+Hexo的相关配置
本贴在手机端因为mermaid插件的问题显示会超出屏幕,以后在想办法解决,目前建议使用电脑浏览
impressionyang
2020/08/27
2.5K0
使用 markdown 画流程图、时序图
在日常工作中,难免会画一些流程图、时序图。之前都是选择使用在线的画图网站,画完然后截图插入到文档。我个人用的比较多的主要是 腾讯文档 。
Mervyn
2021/12/08
2.8K0
使用 markdown 画流程图、时序图
手把手教你画流程图
1)用于和非研发部门交流: 决定人员都做什么工作?描述公司的核心业务。例如用户下单后,就涉及到物流部门进行发货,系统进行开发票等工作。
matinal
2020/11/27
2.2K0
手把手教你画流程图
java流程图平行四边形_编程技巧之流程图「建议收藏」
我们写的程序都是有逻辑顺序的,即是有流程的,流程图的作用则是对这种逻辑顺序的一种描述,是对解决问题的方法、思路或者算法的图形化的展示。
全栈程序员站长
2022/07/31
1.3K0
java流程图平行四边形_编程技巧之流程图「建议收藏」
高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
如果您希望直接访问Vue3导入mermaid的代码,可以直接访问:三、Vue3中如何引入mermaid
watermelo37
2025/01/22
5840
高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
使用LaTeX的TikZ宏包绘制流程图
类似于css的思想,这个其实就是先定义一下样式然后调用,调用的时候也可以修改,大多数参数也能猜(确信
gyro永不抽风
2021/05/21
4.7K0
流程图之美:手把手教你设计一个流程图
流程图是一种图形化工具,主要用于表示完成一项任务的流程、工作流或具体方法。它通过箭头连接各种符号来展示流程步骤,并且通常从一个明确的起始点出发,按照一定的顺序和路径进行展开。今天小编就以葡萄城公司的纯前端表格控件——SpreadJS为例,为大家介绍如何设计一个流程图。
用户10920694
2024/02/02
2020
流程图之美:手把手教你设计一个流程图
UML 教程
UML 从来源中使用相当多的概念。我们将之定义于统一建模语言术语汇表。下面仅列代表性的概念。
静默虚空
2019/05/25
3.4K0
流程图 & 时序图绘制小 tips
在日常工作中,无论是产品经理写 PRD 或是开发、测试同学写技术方案、整理业务文档等场景都会用到诸如流程图、时序图、用例图、泳道图等形式的图来辅助阅读者理解。相信平时工作中有画图需要的读者都有这样的感受:有些图制作过程非常简单但逻辑清晰又不失美观,而有些图费时费力制作繁琐,但效果却不是特别惊艳,这其中的底层逻辑尤为关键,毕竟作图也是一门艺术。本文将会以直播商品讲解业务场景出发,给大家分享一些画图小知识。
得物技术
2023/08/29
2.9K0
流程图 & 时序图绘制小 tips
UML–活动图详解
活动图是状态机的一个特殊例子,它强调计算过程中的顺序和并发步骤。活动图所有或多数状态都是活动状态或动作状态,所有或大部分的转换都由原状态中完成的活动触发。
全栈程序员站长
2022/08/12
6.2K0
UML–活动图详解
软件工程期末考试复习(五) 设计问题过程设计的工具程序复杂程度的定量度量
1、程序流程图又称为程序框图,它是使用最广泛的描述过程设计的方法。程序流程图中使用的符号(a) 选择(分支); (b) 注释; (c) 预先定义的处理; (d) 多分支; (e) 开始或停止; (f) 准备; (g) 循环上界限; (h) 循环下界限; (i) 虚线; (j) 省略符; (k) 并行方式; (l) 处理; (m) 输入输出; (n) 连接; (o) 换页连接; (p) 控制流
用户2417870
2019/09/18
1.1K0
软件工程期末考试复习(五)

        设计问题过程设计的工具程序复杂程度的定量度量
java流程图平行四边形_流程图图形标准含义[通俗易懂]
作用:一般用作要执行的处理(process),在程序流程图中做执行框。在Axure中如果是画页面框架图,那么也可以指代一个页面。你可把页面和执行命令放在同一个流程中做说明,这个时候将两类不同的矩形做色彩区别,然后做说明就好了。
全栈程序员站长
2022/07/25
2.4K0
java流程图平行四边形_流程图图形标准含义[通俗易懂]
如何看懂常用原理图符号、如何阅读原理图
原理图是我们设计,构建和排除电路故障的地图。了解如何阅读和遵循原理图是任何电子工程师的重要技能。
不脱发的程序猿
2021/01/20
4.1K0
流程图设计入门指南 —— 以 Draw.io 为例
直接按保存, 会保存一个新的 xml 文件(当然, 这也间接实现了版本控制), 但是每次都要弹出窗口很麻烦 点击 File->Saveas... 选择 Browser , 浏览器便会实时保存记录,注意不要在无痕模式使用,否则误关闭浏览器也无法找回。
benny
2019/12/12
17.9K0
流程图设计入门指南 —— 以 Draw.io 为例
【愚公系列】软考高级-架构设计师 075-业务流程设计和分类
业务流程设计(Business Process Design, BPD)是指对组织中的各项活动和操作进行系统化的分析、规划和优化,以提高效率、降低成本、提升质量和增强客户满意度的过程。业务流程设计的核心目的是通过重新思考和重新设计企业内部的工作流程和结构,使其更加高效、灵活和适应变化的市场需求。
愚公搬代码
2024/07/29
2190
业务流程图绘制分享
流程:是指特定主体为了满足特定需求而进行的有特定逻辑关系的一系列操作过程,流程是自然而然就存在的。但是它可以不规范,可以不固定,可以充满问题。所以就会造成看似没有流程。
公爵
2022/09/28
9080
业务流程图绘制分享
流程图的画法说明和部分详解
最近项目开发,公司部分人走掉了。3、4月份求职高峰期。找来的新人,由我带领,讲解业务相当麻烦,而且还需要每个人都讲解一遍。因此我就结合现有的功能画了流程图和序列图。我这里就先讲解流程图了。流程图:使用图形表示算法的思路是一种极好的方法,因为千言万语不如一张图。流程图在汇编语言和早期的BASIC语言环境中得到应用。相关的还有一种PAD图,对PASCAL或C语言都极适用。工具使用的visio 2007,由于太大了,这里就不做上传了。
业余草
2019/01/21
1.9K0
流程图的画法说明和部分详解
3 C语言 流程控制 循环 跳转
前面的章节一直在介绍C语言的基本语法知识,然而仅仅依靠这些语法知识还不能编写出完整的程序。在程序中,通常需要加入业务逻辑,并对程序的流程进行控制。本章将重点讲解C语言中最基本的三种流程控制语句。
py3study
2020/01/08
2.1K0
3 C语言 流程控制 循环 跳转
推荐阅读
相关推荐
如何绘制符合规范的流程图表_流程图画法规范
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档