前端调试合集(包含移动端/内嵌h5)

代码内使用方法

alert/console

  • alert和console.log作为JS最基本的调试能力,提供了简易版的断点 (只能断一下) 和输出 (只能输出字符串) 能力,可以在代码运行到预期的位置输出预期的log,通过对不同流程下写入alert,输出变量的值来判断,当前逻辑下是否进入异常流程,输出变量是否符合预期。
  • 优点:简单方便,alert断点处打印的结果真实准确。
  • 缺点:alert会阻断代码执行,console打印的Object只有最终结果。功能简单,只能用于一些简单场景
alert('打印异常流程信息')alert('接口返回值' + JSON.stringify(response));console.log(...params);
console.info(...params);
// 还可以自定义文字颜色哟
console.log('%c' + string, 'color:green');
// 控制台日志前面有个叹号的icon// 警告信息输出
console.warn()
// 输出代码报错日志
console.error(string | Error)

debuger

  • 在代码中使用debuger语法,浏览器执行代码时,会识别debuger为断点,在此行暂停。可以搭配控制台对代码进行调试
  • 优点:打断点方便,不会因为文件hash变更或者拼接时间戳参数导致无法断点
  • 缺点:需要写到代码内,容易因检查疏忽将调试代码带到线上,影响线上功能

浏览器控制台

  1. chrome的控制台是前端最强大的调试工具之一,很多FE同学每天在使用功能只是其中的一小部分,很多非常强大的功能值得我们继续深挖。相信它会成为你技术道路不可或缺的助力。想完整地把控制台的功能说明清楚会占用很大的篇幅,我只在这里做一些指引性的说明,感兴趣的同学建议仔细研究下。

  2. 调试控制台中我们经常使用到的功能都有element(页面内容)、console(日志输出)、network(网络请求)、source(静态文件)、Memory(内存分析)、Application(应用数据)、performance(页面分析)。以下会对最常用最好用的一些功能来做说明,使用熟悉后对工作效率相信会有很大的提升

Element

可调试Html和CSS,修改html标签属性、css样式可直接看到效果,是调试样式UI的一大利器

  • 修改html的属性和DOM节点
    在这里插入图片描述
  • 修改css样式,同步更新最终计算样式
    在这里插入图片描述
    在这里插入图片描述
  • 实时观察当前页面的所有事件监听
    在这里插入图片描述

Console

可出输出console对象下不同方法的语义信息,info(普通信息),log(日志),error(错误信息),warn(警告信息),可以输出代码执行时抛出的错误。同时还支持切换不同的window域和过滤功能。

Network

Network中记录这当前页面所有的请求信息,除此之前还有很多非常好用的辅助功能

  • Preserece log:留存该页签下所有的请求信息,页面刷新上个页面的信息不会消失,方便跟踪跨页面请求的问题

  • Disable cache:get请求不缓存,开发中代码热更新,页面刷新后读取的一直是最新的文件

  • No throtting:可以限制浏览器下行网络请求速度,方便开发是模拟弱网情况。

在这里插入图片描述

  • 导入导出请求抓包。浏览器抓包,不借助代理工具,控制台直接加载分析抓包信息。也可以使用代理工具Proxyman来加载浏览器导出的抓包文件。

此外还有开启(关闭)请求监听,清除、过滤、搜索当前信息等等。这些基本覆盖了我们日常中的需求。

Sources

sources包含当前页面下加载的所有静态资源文件,并根据域名分类。开发者可以在这里直接查看文件内容,在文件代码中加临时断点,并监听变量的值变化和调用栈。结合Search功能可以关键字搜索source内所有文件,可以快速定位要打点的位置。

Memory

Memory可以对当前页面的内存使用情况进行记录,用途开发者分析页面内存泄漏问题。

  • Heap snapshot => 堆快照
    记录当前这个时间点的内存使用情况,在不同时间段进行快照,可以对比分析具体内存泄漏的位置,方便开发者快速定位需要优化的地方

  • Allocation instrumentation on timeline => 分时段的内存占用
    记录一段时间内,内存的使用情况,在哪个时间点增加了变量占用的内存。

记录开始和结束时,需要手动点击左上角小圆点开启和停止
在这里插入图片描述

  • Allocation sampling => 分配抽样

Application

Application中包含页面临时和永久性的数据,比如Storage、Cookie、IndexedDB等等,并且支持修改。此处不再赘述。

Performance

Performance 用于分析页面加载和运行时性能,协助开发者寻找项目中可优化的功能点,功能强大。

  • 使用时先点击小圆点开启监听,然后再到页面中进行具体的交互操作(如加载页面、或执行某个动画)。
    在这里插入图片描述

为了方便大家知晓Performance具体可用于哪些场景,下面我列举几种常见的场景。

  • 首屏加载时长。
    根据记录可以看出页面首次加载中页面每个资源请求、渲染等步骤的占时情况。
    在这里插入图片描述
  • 动画优化
    根据动画执行时计算函数的执行时间,CPU和FPS的波动 来分析具体哪一出的计算复杂导致的拖慢的渲染等等。
    在这里插入图片描述

移动设备PC插线调试

安卓设备PC调试(chrome://inspect)

  1. 打开手机的开发者选项 ---- USB调试
  • ① 找到手机的版本号位置,连续快速点击后,系统会提示打开开发者选项
    在这里插入图片描述

  • ② 在开发者选项中打开USB调试,
    在这里插入图片描述

  1. 连接电脑,调试前准备
  • ① chrome浏览器中访问 chrome://inspect

温馨提示_远程调试需要提前打开科学上网哟

  • ② 手机数据线连接电脑,允许USB调试

再次提示_手机调试需要浏览器开启debug模式,客户端软件内嵌h5可以找客户端的同学打debug包
在这里插入图片描述
3. 打开需要调试的页面,在chrome中找到对应的页面打开(打开调试窗口需要科学上网)

  • ① 如果窗口中没有出现手机对应的页面,说明您打开h5页面的APP不支持调试

  • ② 点击inspect打开窗口

  • ③ 窗口内控制台与chrome中基本一致(控制台功能受调试设备安卓版本影响,安卓4、5的设备可能控制台功能不全)
    在这里插入图片描述
    在这里插入图片描述

  1. 接下来调试的方式就和chrome的控制台一样啦,此处不再赘述

IOS设备Mac端safari调试

  1. 打开safari浏览器 —> 偏好设置
  • 高级选项中勾选 “ 显示开发菜单 ”
    在这里插入图片描述
  1. IOS客户端 —> 设置 —> safari浏览器 —> 高级 ----> 勾选javascript 和web检查器

  2. 移动端safari浏览器打开需要调试的页面,使用数据线连接Mac端,并信任设备

  3. 打开Mac端safari,在开发选项找到移动端需要调试的页面,即可调起浏览器的控制台进行调试啦
    在这里插入图片描述

vconsole

移动端调试的时候,如果需要查看自己打印的日志和请求返回,在不借助电脑调试的情况下,就可以借助vconsole插件来完成。

vconsole是在移动端环境引入类似是控制台的功能,可以查看element、log、network和storage等一些基本调试信息。

npm i -D vconsole
// 简单使用 ====> 搞定
const vConsole = new VConsole();
// package.json
"scripts": {
"dev": "webpack-dev-server --config config/webpack.dev.config.js",
"build": "npm run sdk && npm run pow --mode prod",
},
// main.js
if (process.env.NODE_ENV === "development") {
const vConsole = new VConsole();
}

在这里插入图片描述

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

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

相关文章

Java笔试分享

1、设计模式(写>3种常用的设计模式) 设计模式是在软件工程中解决常见问题的经验性解决方案。以下是一些常用的设计模式: 单例模式(Singleton): 意图:确保一个类只有一个实例,并…

从0到1,AI我来了- (1)从AI手写数字识别开始

前两篇我们我们把控制台、Python环境Anaconda 搞定了,接下来,我们快速进入主题,把AI 界的“Hello World” 实现一下,有个感觉,再逐步了解一些AI的概念。 1、Pytorch 安装 1) 什么是Pytorch? 一个深度学习框架&#…

通信原理-实验六:实验测验

实验六 实验测验 一:测验内容和要求 测试需要完成以下几个步骤: 配置好以下网络图;占总分10%(缺少一个扣一分)根据下面图配置好对应的IP和网关以及路由等相关配置,保证设备之间连通正常;占总…

加速决策过程:企业级爬虫平台的实时数据分析

摘要 在当今数据驱动的商业环境中,企业如何才能在海量信息中迅速做出精准决策?本文将探讨企业级爬虫平台如何通过实时数据分析加速决策过程,实现数据到决策的无缝衔接。我们聚焦于技术如何赋能企业,提升数据处理效率,…

NSS [NSSRound#13 Basic]flask?jwt?

NSS [NSSRound#13 Basic]flask?jwt? 开题 注册一下 要admin才能拿flag 看看是如何进行身份验证的 是flask session flask-unsign --decode --cookie .eJwtzjESwyAMBMC_UKfghJCEP-MRICZp7bjK5O9xkX6L_aR9HXE-0_Y-rnik_TXTlsiXEhUXleKGGGuG1jbmogrCEmNirZ7BEB-VJbTfIi-26hQD…

跨棒距、公法线和齿厚对应关系分析

前面有一期讨论了下滚齿径向进刀量和齿厚的对应关系:《》,有小伙伴又问了,加工时是用跨棒距或者公法线去控制齿厚的,直接给齿厚是无法测量的,如果测一个值再去计算,有点麻烦,有没有他们之间的对…

多多OJ评测系统 在前端脚手架Vue-Cli中设置页面路由

目录 设置页面路由 我们把菜单上的路由改成读取路由文件 设置成export 导出路由 在刚刚的原始路由 index.ts中导入就行了 在这边引入我们的路由文件 我们之后点击菜单 我们的路由文件是这样的 但是没有跳转 写一下事件 接下来要同步路由到菜单项 自己定义监听函数 …

推荐3款不可错过的实用工具

TouchPro TouchPro是一款运行于Windows系统下的时间属性修改工具,其主要功能是允许用户批量修改文件和文件夹的创建时间、修改时间和访问时间。该软件安装后会集成到资源管理器中,不占用任何系统资源,并支持多级目录与隐藏文件的日期属性批量…

推荐几款支持AI剪辑并可使用个人视频素材的软件!

最强AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量 其实现在大部分的AI视频剪辑工具都可以实现一键成片,这里给你分享6款可以使用自己的素材实现AI剪辑的工具及其操作方法! 一、剪映 剪映…

服务器重启了之后就卡在某个页面了,花屏,如何解决??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

前端开发知识(二)-css

<head> <style> div{ } </style> </head> div是布局标签&#xff0c; 一般放在head标签内&#xff0c;最下部。 若直接在在.css文件中写css,文件中&#xff0c;直接写就行&#xff0c;如下所示。 div{ }

MySQL数据库安装使用

我们都知道数据库又分为关系型数据库和非关系型数据库&#xff1b; 关系型数据库指采用了关系模型来组织数据的数据库&#xff0c;指的就是二维表格模型。可以先初步理解为Excel表格。非关系型数据库又被称为NoSQL&#xff0c;对NoSQL 最普遍的定义是“非关联型的”&#xff0…

C语言 | Leetcode C语言题解之第279题完全平方数

题目&#xff1a; 题解&#xff1a; // 判断是否为完全平方数 bool isPerfectSquare(int x) {int y sqrt(x);return y * y x; }// 判断是否能表示为 4^k*(8m7) bool checkAnswer4(int x) {while (x % 4 0) {x / 4;}return x % 8 7; }int numSquares(int n) {if (isPerfect…

Linux环境安装KubeSphere容器云平台并实现远程访问Web UI 界面

文章目录 前言1. 部署KubeSphere2. 本地测试访问3. Linux 安装Cpolar4. 配置KubeSphere公网访问地址5. 公网远程访问KubeSphere6. 固定KubeSphere公网地址 前言 本文主要介绍如何在Linux CentOS搭建KubeSphere并结合Cpolar内网穿透工具&#xff0c;实现远程访问&#xff0c;根…

HTTP请求入参类型解读

HTTP请求入参类型解读 Content-Type 在HTTP请求中&#xff0c;Content-Type请求头用于指示资源的MIME类型&#xff0c;即请求体的媒体类型。它告诉服务器实际发送的数据类型是什么&#xff0c;以便服务器能够正确地解析和处理这些数据。Content-Type可以有多种值&#xff0c;…

kafka架构+原理+源码

1.安装jdk17 sudo yum -y update sudo wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm sudo yum -y install ./jdk-17_linux-x64_bin.rpm、 sudo java -version 2.安装kafka How to easily install kafka without zookeeper | Aditya’s Blog …

一文了解AOL算子加速库

过去一年&#xff0c;随着ChatGPT的发布与快速迭代&#xff0c;基于大数据量、大参数量、大算力的预训练大模型已成为人工智能产业的主要路线。大模型的普及与发展不仅依靠模型本身的创新&#xff0c;更依赖于算力底座的支撑以及软件生态的繁荣&#xff0c;需要伙伴和开发者的积…

Vue3逻辑复用及内置组件

Vue3的逻辑复用主要通过“组合式函数”、“自定义指令”及“插件”来实现。提高了代码复用性&#xff0c;增强代码可维护性及促进团队合作。 1 逻辑复用 1.1 组合式函数 利用Vue组合式API来封装和复用有状态逻辑的函数。对组合式函数有如下约定&#xff1a; 命名&#xff0…

Sentinel限流规则详解

上一期教程讲解了 Sentinel 的快速入门&#xff1a;Sentinel快速入门&#xff0c;这一期主要讲述 Sentinel 的限流规则 簇点链路 簇点链路就是项目内的调用链路&#xff08;Controller -> Service -> Mapper&#xff09;&#xff0c;链路中被监控的每个接口就是一个资源…

wkhtmltopdf 工具安装与使用

前情提要&#xff1a; 最近一个同事请叫我一个问题&#xff0c;他发现一片不错的博文&#xff0c;是在博客园的&#xff0c;但是不能下载这篇文章&#xff0c;我看了一下才发现&#xff0c;原来csdn也是不行的。合理。毕竟是人家辛苦写的文章&#xff0c;不能就这么被别人随便c…