平時工做量大而且很忙,也就意味着不免會在寫代碼的時候一不當心寫出BUG。若是測試一旦沒有測到,代碼上到現網每每就是事故,不少同窗在這種時候手忙腳亂,不知道怎麼調試解決。本文就這點主要講一下平時前端調試用的那些方法,但願可以給到你們幫助。
若是你仍是個前端小白,你最經常使用的調試方法應該是直接在代碼中寫下一個 log
,例如:javascript
console.log('調試信息,輸出:', test)
方法雖然簡單粗暴,可是它是實用且簡單的。然而,若是 BUG
十分複雜,涉及到跨組件甚至是源碼,採用打 log
的方式就變得十分麻煩了;
而比較有經驗的同窗在遇到複雜問題的時候可能會採起如下方法來定位、調試:html
charles
抓包遇到 BUG,一般咱們第一直覺是打開控制檯,點開看一下 Console
前端
一般,若是存在報錯,咱們能夠直接點進去到源碼處直接打斷點java
若是控制檯沒有報錯,只是代碼邏輯出現了問題那咋辦呢?咱們只要在代碼中加個 debugger
就好了,舉個例子:ios
... created () { debugger this.init() this.doSomething() } ...
F12
打開調試工具以後刷新頁面,斷點就會停在 created
裏了。
固然,這裏只是作簡單的示例,實際狀況更加複雜的時候,右邊的堆棧可讓你看到調用順序,沿着調用堆棧通常也能找到問題所在。web
若是打斷點仍是找不到問題,咱們能夠 review
代碼並思考如下問題:chrome
若是是接口數據異常返回了,那固然沒咱們什麼事情了,可是代碼若是沒有提交或者打錯tag引發的事故,那麼事故覆盤會就尷尬了...小程序
charles
怎麼解決咱們的問題呢?一般碰到 BUG,咱們會先從 master
拉一個 fix-bug
的分支。咱們復現、解決 BUG 的前提是調試環境須要跟現網保持一致,具體以下:segmentfault
很是理想化的狀況下,咱們拉下來的 fix-bug
分支能夠直接代理到現網,這樣一來能夠極大提升復現 BUG 的可能性,從而解決它。微信小程序
... devServer: { proxy: { '/api': { target: 'https://你的現網域名', changeOrigin: true, ws: true, pathRewrite: { '^/api': '' } } } }
然而,現實狀況每每不會這麼理想。咱們有時候會被「安排」維護一些老項目,因爲歷史緣由這些老項目每每不能用本地開發代理來進行調試,這時候就能夠用到一個神器 ———— charles
charles
的做用javascript
文件,用本地打包後的 javascript
文件替換它javascript
文件後,只要手動刷新頁面便可生效步驟:
js
js
,右鍵Map Local
跟本地相應的 js
對應固然了,網上關於 charles
抓包的教程已經不少了,這裏只是簡單寫下步驟。你們自行到 google
或者百度上搜索如下關鍵詞便可:
charles
抓包charles
安裝證書比較麻煩的就是,每次更改須要刷新頁面才能看到效果。
移動端的問題處理起來有時候真的很心累,尤爲是ios
上safari
的兼容性問題,固然這裏不會展開講
charles
抓包調試charles
抓包調試仍是很常見的方法,可是如今在安卓7.0及以上已經抓不到了,不過使用 ios
系統的小夥伴依然能夠抓到包。須要注意的是,若是遇到小程序上的支付問題,因爲 ios
在小程序上存在支付限制,用起來反而會顯得掣肘。
對於喜歡折騰的同窗,安卓上的抓包問題已經有解決方案了。
工具:
Google 瀏覽器是具備真機調試功能的,這裏有詳細的教程,本文就不展開講了。
騰訊出的一款基於 X5
內核的真機調試工具,只要連上數據線就完事了,也能夠調試微信H5。
然而以前在這裏查看到相關問答和說明 ,如今的小程序上的內核已經改變,使用TBS已不能調試。
微信開發者工具具備真機調試的功能,然而,在實際環境中,首先你要有開發者權限才行。
小結:可以直接用真機調試的儘可能用真機調試,不論是樣式仍是代碼邏輯都能快速定位並解決。
微信小程序上有時候會出現一些奇特的 BUG,每每跟咱們的代碼邏輯徹底沒有關係,這種時候應該到微信的開放社區上及時反饋BUG。點擊這裏查看微信開放社區。
直接打 log
或者斷點就好了,通常不用特地去抓包。
vconsole
咱們在前端項目中安裝 vcosole
插件(開發/測試環境下),那麼就能夠
能夠在移動端中(小程序除外)查看 log
或者接口請求狀況,通常用來快速定位問題,不建議用來調試很複雜的 BUG
可以用調試工具定位出來的問題都不算問題,相信不少前端的同窗都有這種感受。有這麼一些疑難雜症,咱們很難去定位、解決,何況通常給到咱們的時間很是緊,這種時候應該怎麼辦呢?我總結了以下方法:
經常使用到的網站:
固然,不管是跟同事求助,仍是到社區上尋找解決方案,你都要事先整理好這些:
萬一問題最後仍是沒有解決,你得想一個折中的解決方案。
如下資料可供參考:
前端的調試方法有不少,知道有哪些方法很重要,可是最重要的仍是能在不一樣的場景下采用最合適的方案。
你們若是以爲以爲寫的不錯,能夠點贊評論。掃描下方的二維碼或搜索「tony老師的前端補習班」關注個人微信公衆號,那麼就能夠第一時間收到個人最新文章。