V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
suSouth
V2EX  ›  分享发现

Eruda 一个小而美却被人遗忘的调试神器

  •  
  •   suSouth · 2018-12-18 07:46:58 +08:00 · 3962 次点击
    这是一个创建于 2176 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Eruda 是一个专为手机网页前端设计的调试面板,类似 DevTools 的迷你版,其主要功能包括:捕获 console 日志、检查元素状态、捕获 XHR 请求、显示本地存储和 Cookie 信息等等,IT 平头哥联盟

    引言

    ​  日常工作中再牛逼的大佬都不敢说自己的代码是完全没有问题的,既然有问题,那就也就有调试,说到调试工具,大家可能对于fiddlerCharleschrome devtoolsFirebug、还有 Safari 远程调试等比较熟悉,甚至有些是我可能也没有用过的;

    这里喷一句吧,谁都别给我提 IE 啊,IE 那个不叫调试工具,那叫坑爹神器,话说最近不是又甩锅了,把自己的革命老根据地都甩了。

    俗话说预先善其事必先利其器,今天想给大家分享的是一个可能被人们忽略的小工具,为什么说被人们忽略呢?因为发现 github 上它才4.6k Star、457 ForkWatch 173次,也就是说千万开发者中知道它的人可能不超过 5w,于是决定分享一波,此文重在引导,希望能帮大家开发中带来一点点便利、效率的提升

    在日常的移动端开发时,一般都是试用 chrome 浏览器的移动端模式进行开发和调试,只有在 chrome 调试完成,没有问题了才会上到真机测试,移动端,宝剑锋从磨砺出,梅花香自苦寒来,做有温度的攻城狮!,公众号:honeyBadger8,IT 平头哥联盟

    这里是IT 平头哥联盟,我是首席填坑官苏南,用心分享 做有温度的攻城狮。

    Eruda 是什么?

    Eruda是什么? Eruda 是一个专为前端移动端移动端设计的调试面板,类似Chrome DevTools 的迷你版(没有 chrome 强大 这个是可以肯定的),其主要功能包括:捕获 console 日志、检查元素状态、显示性能指标、捕获 XHR 请求、显示本地存储Cookie信息、浏览器特性检测等等。

    虽说日常的移动端开发时,一般都是在用 Chrome DevTools 浏览器的移动端模式模拟各种手机型号来进行开发和调试,确保功能 /页面展示等都没有问题了,才会提交测试;

    但是前面都讲了,只是模拟模拟,当下手机品牌可算是千千万,手机中各种类浏览器,甚至 APP 都有自己不一样的特色 腰间盘突出,有的还特别突出,有病我们得给它治啊,不然测试、产品、需求、领导都不会放过我们,比如下图场景。

    首席填坑官∙苏南的专栏 交流:912594095、公众号:honeyBadger8,IT 平头哥联盟

    如何使用?

    • 它支持 npm 方式的,这个是不是很开心??
    • 外链,没错,就是外链的形式引入,对于它,我觉得 npm 的方式没有什么太大意义,直接以外链的引入更方便,也能减少项目资源包的大小,更便于控制是否要加载这个资源。
    方式一,默认引入:
    <script src="//cdn.jsdelivr.net/npm/eruda"></script>
    <script>eruda.init();</script>
    
    方式二,动态加载:
    
    __DEBUG__ && loadJS('http://cdn.jsdelivr.net/eruda/1.0.5/eruda.min.js', ()=>{
      eruda.init();
    });//苏南的专栏 交流:912594095、公众号:honeyBadger8
    
    方式三 ,指定场景加载:
    //比如线上 给自己留一个后门,
    //我们一般的做法是喜欢给某个不起眼的元素,添加一个点击事件,要点它十次、八次以后才开启 debug 模式;
    ;(function () {
        var src = 'http://cdn.jsdelivr.net/eruda/1.0.5/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>');
    })();
    
    方式四 ,npm:
     npm install eruda --save
    
    …… 加载的方式很多
    
    

    小而美

    • 这里小,不是指它的包小啊,知道它的同学都知道,其实它的包并不小(约 100kb gzip);
    • 100kb 不小了,用形容妹子的话来说就是:丰满,直接说它胖,你就死定了;
    • 这里的小而美是指小巧功能也强大,界面也好看;
    • 说了这么多 来看看它到底长啥样吧:

    在真机运行下无法查看 console.log 日志和其他信息如网络请求、显示本地存储等信息。如果网页是运行在手机浏览器中还算好,可以把网址在电脑上打开查看 console 信息,但是如果是做 APP 的内嵌 H5 页面,那就只能靠开发阶段在浏览器模拟环境中尽量没有 Bug,公众号:honeyBadger8

    功能清单

    console

    • console 的作用就不用废话了,大家都懂;
    • 早期在console诞生之前,我们的调试功能都是 alert 过多,包括现在的移动端,在手机上我们想看到参数值、数据、节点等都以alert打印为多数,但过于粗暴、而且一不小心有可能带到线上去了;
    • eruda 能帮我们解决这个问题;所有的日志、错误都能帮我们捕获到
    • 甚至我们还能像chrome,直接在控制台执行 js 代码;

    微信开发必备 h5 开发调试,利器 Eruda

    Elements

    • eruda 它没有在 PC 端这么直观,但也因为在移动端展示的方式局限性,
    • 它能把每一个父节点下的每一个子节点全部列出来;你点击某个子节点时,列出当前节点全部的属性、样式、盒子模型等;
    • 查看标签内容及属性;查看 Dom 上的样式;支持页面元素高亮;支持屏幕直接点击选取;查看 Dom 上绑定的各类事件。
    • 甚至也能使用Plugins 插件,做到跟 PC 端一样,形成 dom tree ;

    使用神器 eruda 进行移动端调试 PC、Mobile 调试节点对比

    Network

    • 现在的项目大多都是前后端分享的形式了,前端处理的业务越来越多、各种请求资源等;
    • 干的越多承担责任也越多、锅也越多,又大又平的那种哦~
    • 所以 Network 的必要性不言而喻,它能捕获请求,查看发送数据、返回头、返回内容等信息,它对于我们平时前后端联调出现的问题定位是有很大帮助的,比如:后端说你请求参数少了,前端你看了代码逻辑没有问题,但在手机上就是调不通,Network 能很直接明了的看到你请求带了什么。

    The Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborative, ... HTTP is designed to permit intermediate network elements to improve or enable communications between clients and servers,vConsole 便是这样一款很棒的移动端 DevTools 工具,由大厂企鹅出品。但本文把他定位为男二号今天的主角男一号是:Eruda ! vConsole 的同类。,PC、eruda 数据请求对比

    Resources

    • 它跟 Chrome Devtools 里的 Application + Source,两者的结合体;
    • Resources 它能查看 Cookie、localStorage、sessionStorage 等信息,并且还能执行清除操作( Application );
    • 它还查看当前页面加载脚本及样式文件;查看页面加载过的图片等资源( Source );
    • 好吧,感觉说的再多,也不如上图直接: Resources 功能分析有哪些关于前端开发技术 HTML、CSS、JavaScript 等值得推荐的书籍? 从菜鸟到大 ... 锋利的 jQuery 第 2 版  [书籍] . Js 知识点. JavaScript 深入系列 15 篇正式完结!

    Sources/Info

    • Sources:查看页面源码;格式化 html,css,js 代码及 json 数据。
    • Info:主要输出 URL 信息及 User Agent ;及其他的一些手机系统信息,同时也支持自定义输出内容哦。

    通常写前端页面都在 Chrome 浏览器的开发模式下进行调试,但是写放在移动端的 H5 页面时,有时候会遇到在 Chrome 上调试没有问题,但是在手机的浏览器上有问题的情况;也有的页面是需要放在微信,众好中的,调用了微信 JSSDK 的方法,必须得通过手机上的微信内置浏览器才能使用,这个时候如果遇到了报错,只能够通过 alert 一步一步地定位问题。今天发现了一个好用的可以在手机浏览器上直接定位问题的插件:eruda.js,

    高阶用法

    • 以上刚才介绍的是它的一些基本的功能,也是我自己在工作中用的较多的;
    • 最近发现新版本功能要强大不少,之前一直用的1.0.5,好像是没有插件这一项的;
    • 大概看了一下,都蛮强大,包括上面的Dom tree,插件这部分并没有都实际应用过,所以也就不打肿脸充胖子了,有兴趣的同学可以自己看看。
    • 如果觉得已经的插件都满足不了你的需求,它还支持自定义插件自己编写。

    高级插件用法等你去发现~

    结尾:

    以上就是今天给大家带来的分享,工作中用了蛮久,挺方便的,对于定位移动端的疑难杂症问题、甚至留下后门定位线上问题都有很大帮助,如文中有理解不到位之处,欢迎留言指出。

    线上问题我们一般的做法是喜欢给某个不起眼的元素,添加一个点击事件,要点它十次、八次以后才开启 debug 模式;

    上面二维码确实是真实的官方 Demo,不用担心有套路,也有链接:https://eruda.liriliri.io/  Github 地址:https://github.com/liriliri/eruda

    IT 平头哥联盟

    如觉得不错,请记得随手转发,并关注( IT 平头哥联盟)支持我们哦~

    其他

    作者:苏南 - 首席填坑官

    链接: https://blog.csdn.net/weixin_43254766

    交流:912594095、公号:honeyBadger8

    本文原创,著作权归作者所有。商业转载请联系IT 平头哥联盟获得授权,非商业转载请注明原链接及出处。

    12 条回复    2018-12-19 19:04:22 +08:00
    suSouth
        1
    suSouth  
    OP
       2018-12-18 07:47:10 +08:00
    君问归期未有期,
    巴山夜雨涨秋池。
    何当共剪西窗烛,
    却话巴山夜雨时。—— 早安~
    IsaacYoung
        2
    IsaacYoung  
       2018-12-18 07:55:36 +08:00 via iPhone
    用过 貌似安卓 4.4 兼容有问题
    richard1122
        3
    richard1122  
       2018-12-18 08:13:32 +08:00
    看起来很像 chrome 远程调试器?
    C2G
        4
    C2G  
       2018-12-18 08:37:11 +08:00 via Android
    用过的学长说兼容性不是很好的样子
    akcode
        5
    akcode  
       2018-12-18 09:12:02 +08:00
    为什么不用这个。。
    https://debugx5.qq.com/
    shell314
        6
    shell314  
       2018-12-18 10:35:14 +08:00 via Android
    这个可以有
    bhaltair
        7
    bhaltair  
       2018-12-18 11:11:43 +08:00
    一直在用
    misaka19000
        8
    misaka19000  
       2018-12-18 11:27:03 +08:00
    这是楼主写的吗?
    kkeybbs
        9
    kkeybbs  
       2018-12-18 12:22:52 +08:00 via iPhone
    和 vconsole.js 挺像
    suSouth
        10
    suSouth  
    OP
       2018-12-18 12:40:05 +08:00
    @misaka19000 不是,我没有这么强大,只是觉得蛮不错,分享一下而已~
    judasnow
        11
    judasnow  
       2018-12-18 17:56:20 +08:00
    6
    litpen
        12
    litpen  
       2018-12-19 19:04:22 +08:00
    这个有用过,在手机上调试操作不便,能展示的信息不够直观,控制台展示的 log 有限,最后还是用了 spy-debugger 比较稳
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:40 · PVG 10:40 · LAX 18:40 · JFK 21:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.