2020.9.16 星期三 11:57
移动端(web页面)开发/调试手段
基本手段
chrome (pc)
Chrome 控制台 device模拟
调ui,请求等方便
真机
1)原始/粗暴:alert
2)使用代理/抓包工具,抓包请求
代理/抓包工具:chalrs,f*, 等。新秀alibaba/lightpro
alibaba/lightproxy
文档:https://lightproxy.org/zh-CN/doc/getting-started
3)通过数据线连接
安卓:Chrome Remote Devices
依赖 Chrome 来进行远程调试,适合安卓手机。
首先,开启 Android 手机的「开发者选项」,勾选 「USB 调试」。
然后,Chrome 中输入:chrome://inspect,进入调试页面。
iPhone
iphone【设置】>【Safari】>【高级】>【Web检查器】
打开mac safari ,找到开发。在safafri中看到的iphone打开的连接以及h5内容
4)调试工具:vConsole;Eruda
看起来很完美,但是有个小缺点:网络请求,需要刷新页面,可是很多内嵌的 H5 页面是没有机会刷新页面的,所以需要客户端童鞋配合增加刷新的功能方便调试。
5) 其他:vorlon ((在Vue多页面工程中,单页面未尝试,但是原理应该一样)
1.首先进行全局安装vorlon(cnpm install -g vorlon);
2.然后在index.html(需要监控的界面)添加
3.打开cmd,输入vorlon执行
4.在浏览器中打开http://192.168.1.:(你配置的监控ip和端口)进行监控
模拟器
移动端开发(原生)编辑器可以模拟设备运行
可以看到各种信息,包括日志,请求,资源等。可断点
h5跨端开发
或者下载安卓模拟器(ios没听说)
其余流程就和真机一致
混合开发
嵌套在webview的h5页面,可以在原生开发的编辑器中输入日志的信息
(监听webview 的console.log/alert等。或者约定debug方式/函数)
然后在端上开发老师的编辑器,查看到日志等信息
总结
不同方式有不同的场景。
不同的bug/调试,可能要通过一种或者多种方式。
终极
究极,肉眼debug
调试包
Eruda
github: https://github.com/liriliri/eruda
Eruda 是一个专为手机网页前端设计的调试面板,类似 DevTools 的迷你版,其主要功能包括:捕获 console 日志、检查元素状态、显示性能指标、捕获 XHR 请求、显示本地存储和 Cookie 信息、浏览器特性检测等等。
Js 文件对于移动端来说略重( gzip 后大概 80kb )。建议通过 url 参数来控制是否加载调试器,比如1
2
3
4
5
6
7
8<script>
;(function () {
var src = 'node_modules/eruda/eruda.min.js';
if (!/eruda=true/.test(window.location) && localStorage.getItem('active-eruda') != 'true') return;
document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
document.write('<scr' + 'ipt>eruda.init();</scr' + 'ipt>');
})();
</script>
1 | <script |
vConsole
github: https://github.com/Tencent/vConsole
一个轻量、可拓展、针对手机网页的前端开发者调试面板。
打印日志
与 PC 端打印 log 一致,可直接使用 console.log() 等方法直接打印日志:console.log('Hello World');
未加载 vConsole 模块时,console.log() 会直接打印到原生控制台中;
加载 vConsole 后,日志会打印到页面前端+原生控制台。
对比
name | watch | star | fork | issue |
---|---|---|---|---|
Eruda | 261 | 9.1k | 742 | 10/124 |
vConsole | 313 | 12k | 2.5k | 98/132 |
鸡肋:线上(有的灰度)打包的时候,会把console去掉。所以,是看不到log的。
开发环境有的。测试环境也可以加
可以看看cookie,网络请求;error等
上面两者都可以在head中引入;或者按需(await/defer),放置body结尾。
其他
[H5 移动调试全攻略]
$_PS: 内容比较全
怎么在移动端调试web前端?