【保姆级教程】Vue项目调试技巧

news2024/11/26 13:40:42

前言

Vue项目开发过程中,当遇到应用逻辑出现错误,但又无法准确定位的时候,知晓Vue项目调试技巧至关重要,debug是必备技能。

同后台项目开发一样,可以在JS实现的应用逻辑中设置断点,并进行单步、进入方法内、跳出方法等调试,从而准确定位问题根源。

本文主要讲解针对Vue项目进行调试的 3 种方法:debuggerVue.js devtools、vs code插件。

调试方法

1、debugger

debugger是浏览器提供的调试语句,其主要是通过停止JS的执行,相当于设置断点。它的使用方法很简单, 只需要在我们的JS语句中, 插入一行debugger; 即可。

JS代码编写的过程中,我们都会通过浏览器的调试模式(F12)来检查代码逻辑是否正确,大多数我们都是通过设置断点来进行调试。

应用debugger调试Vue项目,需要在项目中需要的位置写debugger,项目运行后,打开浏览器按F12,在chrome sources页签中就会直接进入断点,至此就可以可以进行单步、跳步调试。

debugger调试

2、Vue.js devtools

该调试工具为针对 Chrome 浏览器而设计的开源调试工具,可以自行将该项目下载下来然后编译,并将生成后的chrome插件安装至chrome中,步骤如下:找到谷歌浏览器的扩展程序功能,勾选开发者模式,然后我们将插件文件夹里的shells>chorme文件夹直接拖到页面中,完成安装。也可以通过流程扩展直接安装,如下图所示。

Vue-devtools

然后运行本地项目用谷歌浏览器打开就可以调试了,如下图所示。

vue

我们通过vue.js devtools配合在浏览器中展示源代码(Sources标签页)打断点,来调试非常也是非常方便,如下图所示。这是我用的比较多的调试方法。这种方法是基于 source-map 的,依赖于浏览器中和源码的一个映射,通过映射来找到源文件

vue.js devtools配合在浏览器中展示源代码

上面的方式要使用需要在前端项目的vue.config.js添加如下内容即可。

vue.config.js添加source-map

module.exports = {
  configureWebpack: {
    devtool: 'source-map'
  }
}

参考:在浏览器中展示源代码

3、vs code 插件 Debugger for Chrome

这种方式打断点最方便,但是不能配合vue.js devtools

在vs code中下载插件:Debugger for Chrome

Debugger for Chrome插件

安装插件后,在vs左侧会出现一个蜘蛛图标,如下图所示。

debugger

点击在 Activity Bar 里的 Debugger 图标来到 Debug 视图,然后点击那个齿轮图标来配置一个 launch.json 的文件,选择 Chrome/Firefox:Launch 环境。然后将生成的 launch.json 的内容替换成为相应的配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "chrome",
      "request": "launch",
      "name": "vuejs: chrome",
      "url": "http://localhost:8080",
      "webRoot": "${workspaceFolder}/src",
      "breakOnLoad": true,
      "sourceMapPathOverrides": {
        "webpack:///src/*": "${webRoot}/*"
      }
    },
    {
      "type": "firefox",
      "request": "launch",
      "name": "vuejs: firefox",
      "url": "http://localhost:8080",
      "webRoot": "${workspaceFolder}/src",
      "pathMappings": [{ "url": "webpack:///src/", "path": "${webRoot}/" }]
    }
  ]
}

启动调试,在需要设置断点的页面设置一个断点,即可断点调试,如下图所示。

Debugger

这种方式是使用 vscode 提供的调试工具调试, vscode 的调试工具还是比较全面的,基本的逐行调试,查看变量值(watch) 什么的都有,而且它的使用让我感觉像是在调试后端代码,不过Debugger for Chrome 的缺点也很明显,并不能及时复现 BUG, 因为它的调试是重新打开一个 Chrome Tab 页,相当于重启,而重启以后很多调试的环境已经是不存在了,失去了调试的可能。当然随着工具的不断提升,这些问题都会慢慢被完善。

4、其他方式

平时开发中还可以使用辅助语句如:console.log(),把这个写在代码中,使用chrome,运行到这一行,会直接在结果显示在浏览器控制台上。

类似 console 这种打印信息的调试方法,几乎每种语言都有,而 JS 也是非常多人在使用,而且也很方便,需要调试的地方就去插入console类的输出语句就可以打印相关的信息,还可以根据不同类型的调试输出不同颜色,不同类型的提示,比如 console.log, console.error, console.info…我基本只用console.log, 其具体使用方式如下

function getData() {
  // ...
  const data = console.log(data); //...;
}

简单的输出你需要的信息,比如你想知道接口返回的数据是什么?有没有返回正确的数据?当发现渲染错误的时候我可能就会去打印一下,其实这种调试思路有点像黑盒测试,不用去管内部实现,就是看用户输入得到的输出是什么

console

console 调试还有一个优点就是,打印的数据具有完整的数据结构,类似对象,数组之类的值,可以清晰的看到它的数据结构,像 JS 这种具有复杂引用的语言,可以查看它的原型链,即使是 vue 负责项目的开发中也能帮助我们进一步分析输出,这也是浏览器提供给我们的便利。

console

以上介绍的几种方式,最推荐使用的是vue的chrome插件来进行调试(方式二)

参考资料

vue-devtools:https://devtools.vuejs.org/

在 VS Code 中调试:https://v2.cn.vuejs.org/v2/cookbook/debugging-in-vscode.html

Vue2.x 组件通信方式:http://www.guosisoft.com/article/detail/411234710110277

Vue 前端开发团队风格指南(史上最全):http://www.guosisoft.com/article/detail/415491255230533

结语

如果本文对你有一点点帮助,点个赞支持一下吧,你的每一个【赞】都是我创作的最大动力 _

更多技术文章请往:http://www.guosisoft.com/article,大家一起共同交流和进步呀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sqoop导入实战

Sqoop导入实战 Sqoop-import 案例1 表没有主键,需要指定map task的个数为1个才能执行 Sqoop导入原理: ​ Sqoop默认是并行的从数据库源导入数据。您可以使用-m或--num-mappers参数指定用于执行导入的map任务(并行进程)的数量。每个参数都取一个整数值&#xff0…

【软件工程题库】第六章 编码和测试

🕺作者: 迷茫的启明星 学习路线C语言从0到1C初阶数据结构从0到1 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

Python基础(15)——Python字典(dict)详解

Python基础(15)——Python字典(dict)详解 文章目录 Python基础(15)——Python字典(dict)详解课程:字典目标一. 字典的应用场景二. 创建字典的语法三. 字典常见操作3.1 增…

arm64架构的linux中断分析(一)

文章目录 1. 中断的概念和作用2. Linux中断处理机制2.1 中断请求2.2 中断处理2.3 中断完成2.4.中断触发和处理步骤详解2.4.1 异常向量表的解读 2.5 硬件中断号和软件中断号 1. 中断的概念和作用 当计算机的CPU需要在执行任务的同时响应外部事件时,中断是一种重要的…

Python基础(13)——Python列表(list)详解

Python基础(13)——Python列表(list)详解 文章目录 Python基础(13)——Python列表(list)详解课程:列表目标一. 列表的应用场景二. 列表的格式三. 列表的常用操作3.1 查找…

持 PMP®证书增持 CSPM-2证书,值不值?

2023年起,持有PMP证书的朋友可以直接增持一个同等级证书CSPM-2,不用重新考试,不用重新学习,原PMP证书不影响正常使用,相当于多了一个国标项目管理领域的证书。 第一步准备资料 1、填写能力评价表(简历和业绩不用填&am…

ChatGPT批量生成文章软件:创意无限,内容源源不断

ChatGPT是一种基于人工智能技术的自然语言处理模型,它能够生成各种主题的文章。这种软件具有创意无限、内容源源不断的特点,能够满足用户对于大量文章的需求。 方面一:文化艺术 ChatGPT软件可以生成关于文化艺术的文章,包括绘画、…

C++基础入门教程(2)

3 运算符 作用: 用于执行代码的运算 本章我们主要讲解以下几类运算符: 运算符类型 作用 算术运算符 用于处理四则运算 赋值运算符 用于将表达式的值赋给变量 比较运算符 用于表达式的比较,并返回一个真值或假值 逻辑运算符 用于根据表达式的…

DevExpress WPF功能区控件,更轻松创建商业应用工具栏!(下)

在上文中(点击这里回顾>>),我们主要介绍了DevExpress WPF的Ribbon、Toolbar和Menus组件支持MVVM、功能区命令栏和视图等,本文将继续介绍这些组件的自定义功能等。 DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超…

行业报告 | 生成式人工智能:人人可用的新时代

原创 | 文 BFT机器人 01 人工智能的发展迎来新拐点 ChatGPT 正在唤醒全球对人工智能 (AI)变革潜力的认知,激发起前所未有的关注和创造力浪潮。 该技术可以模仿人类的对话和决策能力,使我们站上了公众采用人工智能的第一个真正拐点。最终,所有…

k8s volume简单总结 —— 筑梦之路

Kubernetes目前支持的Volume类型包括Kubernetes的内部资源对象类型、开源共享存储类型、存储厂商提供的硬件存储设备和公有云提供的存储等。 将Kubernetes特定类型的资源对象映射为目录或文件,包括以下类型的资源对象: 类型描述ConfigMap应用配置Secret加…

WPF开发txt阅读器15:C#合并段落

文章目录 清理空格段落拼接去除空行按键事件 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录💎快捷键翻页字体控件绑定💎前景/背景颜色书籍管理系统💎用树形图管理书籍语音播放💎播放进度显…

Cell -- PARADIGM算法可预测药物与微生物组的关联关系

在癌症患者中,药物对肠道细菌群的影响很难确定。以往的研究主要关注抗生素对肠道微生物组的影响,而对非抗生素药物的影响在人体中了解较少,这是由于缺乏可靠的药物暴露数据和长期粪便样本的收集。 2023年6月8日发表于《Cell》的“High-resolu…

2023年北京/上海/深圳DAMA-CDGA/CDGP数据治理工程师认证报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

【openGauss基本概念---快速入门】

【openGauss简单使用---快速入门】 🔻 一、基本概念🔰 1.1 openGauss🔰 1.2 数据库(Database)🔰 1.3 数据块(Block)🔰 1.4 行(Row)🔰 …

Live800:企业如何提高服务数据可用性?

数据是现代企业的重要资源,蕴含着巨大的商业价值是企业运用科学管理、决策分析的基础。近几年来“大数据”一词的热度有目共睹,各行业根据自身特点和需求不断探索符合行业特性的大数据应用场景。那么对客服行业来说,大数据将对客户服务将产生…

基于C/S框架的医院LIS实验室检验系统源码

LIS系统功能 一、字典管理模块: 系统参数功能简介:集中设置系统使用过程中所需的参数值,一般由开发或实施人员进行设置。 标本管理功能简介:标本管理是对检验业务中涉及的检验标本类型进行初始化设置, …

详解浮点数

目录 1.什么是浮点数 2.举个例子 2.1.十进制转二进制 2.2.规范尾数位 2.3.计算指数位 2.4.拼接结果 3.精度丢失 4.JAVA中的浮点数思考 1.什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表示实数,但是到为止使用最广泛的是浮点表示法…

sqoop导出实战

Sqoop导出实战 普通导出 在Sqoop中,使用export进行导出,指的是从HDFS中导出数据到MySql中: 构建MySql的表: CREATE TABLE u2 (id int(11) DEFAULT NULL,age int(11) DEFAULT 0 ) ENGINEInnoDB DEFAULT CHARSETutf8; 复制代码 HDFS导出到MySql 第一…

LabVIEW开发基于脑机接口的航空航天相机载体

LabVIEW开发基于脑机接口的航空航天相机载体 脑机接口是人脑与外部世界之间的直接通信渠道。脑机接口是一个全新的人机界面系统。该系统获取和分析生物电信号,目标是直接在大脑和外部设备之间创建一个通信通道。计算机或微处理器的发展提高了复杂的数据处理能力。生…