
引言
  日常工作中再牛逼的大佬都不敢說自己的代碼是完全沒有問題的,既然有問題,那就也就有調試,說到調試工具,大家可能對於fiddler、Charles、chrome devtools、Firebug、還有Safari遠程調試等比較熟悉,甚至有些是我可能也沒有用過的;
這里噴一句吧,誰都別給我提IE啊,IE那個不叫調試工具,那叫坑爹神器,話說最近不是又甩鍋了,把自己的革命老根據地都甩了。
俗話說預先善其事必先利其器,今天想給大家分享的是一個可能被人們忽略的小工具,為什么說被人們忽略呢?因為發現github上它才4.6k Star、457 Fork、Watch 173次,也就是說千萬開發者中知道它的人可能不超過5w,於是決定分享一波,此文重在引導,希望能幫大家開發中帶來一點點便利、效率的提升:

Eruda是什么?
  Eruda是什么?Eruda 是一個專為前端移動端、移動端設計的調試面板,類似Chrome DevTools 的迷你版(沒有chrome強大 這個是可以肯定的),其主要功能包括:捕獲 console 日志、檢查元素狀態、顯示性能指標、捕獲XHR請求、顯示本地存儲和 Cookie 信息、瀏覽器特性檢測等等。
雖說日常的移動端開發時,一般都是在用Chrome DevTools瀏覽器的移動端模式模擬各種手機型號來進行開發和調試,確保功能/頁面展示等都沒有問題了,才會提交測試;
但是前面都講了,只是模擬、模擬,當下手機品牌可算是千千萬,手機中各種類瀏覽器,甚至APP都有自己不一樣的特色 腰間盤突出,有的還特別突出,有病我們得給它治啊,不然測試、產品、需求、領導都不會放過我們,比如下圖場景。

如何使用?
- 它支持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
- console 的作用就不用廢話了,大家都懂;
 - 早期在
console誕生之前,我們的調試功能都是alert過多,包括現在的移動端,在手機上我們想看到參數值、數據、節點等都以alert打印為多數,但過於粗暴、而且一不小心有可能帶到線上去了; - eruda 能幫我們解決這個問題;所有的日志、錯誤都能幫我們捕獲到
 - 甚至我們還能像
chrome,直接在控制台執行js代碼; 

Elements
- eruda 它沒有在PC端這么直觀,但也因為在移動端展示的方式局限性,
 - 它能把每一個父節點下的每一個子節點全部列出來;你點擊某個子節點時,列出當前節點全部的屬性、樣式、盒子模型等;
 - 查看標簽內容及屬性;查看Dom上的樣式;支持頁面元素高亮;支持屏幕直接點擊選取;查看Dom上綁定的各類事件。
 - 甚至也能使用
Plugins插件,做到跟PC端一樣,形成 dom tree; 

 
Network
- 現在的項目大多都是前后端分享的形式了,前端處理的業務越來越多、各種請求資源等;
 - 干的越多承擔責任也越多、鍋也越多,又大又平的那種哦~
 - 所以 Network 的必要性不言而喻,它能捕獲請求,查看發送數據、返回頭、返回內容等信息,它對於我們平時前后端聯調出現的問題定位是有很大幫助的,比如:后端說你請求參數少了,前端你看了代碼邏輯沒有問題,但在手機上就是調不通,Network 能很直接明了的看到你請求帶了什么。
 

Resources
- 它跟 Chrome Devtools 里的 
Application+ Source,兩者的結合體; - Resources 它能查看 Cookie、localStorage、sessionStorage等信息,並且還能執行清除操作(Application);
 - 它還查看當前頁面加載腳本及樣式文件;查看頁面加載過的圖片等資源(Source);
 - 好吧,感覺說的再多,也不如上圖直接:

 
Sources/Info
- Sources:查看頁面源碼;格式化html,css,js代碼及json數據。
 - Info:主要輸出URL信息及User Agent;及其他的一些手機系統信息,同時也支持自定義輸出內容哦。
 

高階用法
- 以上剛才介紹的是它的一些基本的功能,也是我自己在工作中用的較多的;
 - 最近發現新版本功能要強大不少,之前一直用的
1.0.5,好像是沒有插件這一項的; - 大概看了一下,都蠻強大,包括上面的
Dom tree,插件這部分並沒有都實際應用過,所以也就不打腫臉充胖子了,有興趣的同學可以自己看看。 - 如果覺得已經的插件都滿足不了你的需求,它還支持自定義插件自己編寫。
 

結尾:
以上就是今天給大家帶來的分享,工作中用了蠻久,挺方便的,對於定位移動端的疑難雜症問題、甚至留下后門定位線上問題都有很大幫助,如文中有理解不到位之處,歡迎留言指出。
線上問題我們一般的做法是喜歡給某個不起眼的元素,添加一個點擊事件,要點它十次、八次以后才開啟 debug 模式;
上面二維碼確實是真實的官方Demo,不用擔心有套路,也有鏈接:https://eruda.liriliri.io/

如覺得不錯,請記得隨手轉發,並關注(IT平頭哥聯盟)支持我們哦~
其他
作者:蘇南 - 首席填坑官
鏈接:https://blog.csdn.net/weixin_43254766
交流群:912594095[
資源獲取/交流群]、公眾號:honeyBadger8本文原創,著作權歸作者所有。商業轉載請聯系
IT平頭哥聯盟獲得授權,非商業轉載請注明原鏈接及出處。
