成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何讓 Vue、React 代碼的調試變得更爽

開發 前端
作為前端工程師,調試 Vue、React 代碼是每天都要做的事情,不同的調試方式體驗和效率都是不一樣的。所以我想把我常用的 VSCode 調試網頁的方式介紹給大家。

作為前端開發,基本每天都要調試 Vue/React 代碼,不知道大家都是怎么調試的,但我猜大概有這么幾種:

  • 不調試,直接看代碼找問題
  • console.log 打印日志
  • 用 Chrome Devtools 的 debugger 來調試
  • 用 VSCode 的 debugger 來調試

不同的調試方式效率和體驗是不一樣的,我現在基本都是用 VSCode debugger 來調試,效率又高、體驗又爽。

可能很多同學還不知道怎么用 VSCode 調試網頁,這篇文章我就來介紹下。

我們分別看下 React 和 Vue 的:

用 VSCode 調試 React 代碼

我用 create-react-app 創建了一個 demo 項目,有這樣一個組件:

跑起來開發服務器:

瀏覽器顯示的界面是這樣的:

如何用 VSCode 調試它呢?

我們在根目錄下添加一個 .vscode/launch.json 的配置文件:

創建了一個調試配置,類型是 chrome,并指定調試的 url 是開發服務器的地址。

在 react 代碼里打兩個斷點:

然后點擊運行:

看,XDM,它斷住了!調用棧、當前環境的變量等都有。

釋放斷點,繼續往下走。

點擊的時候也能拿到對應的事件對象:

是不是超方便!

而且當你寫業務累了,想摸魚看會 react 源碼,那直接點擊調用棧里的某一幀看就行:

比如渲染的時候會調用 renderWithHooks 方法,里面的 workInProgress 對象就是當前 fiber 節點,它的 memorizedState 屬性就是 hooks 存放值的地方:

用 VSCode 來調試 React 代碼之后,調試業務代碼或者看源碼的體驗都很爽,有木有。

再來看下 Vue 的:

用 VSCode 調試 Vue 代碼

Vue 的調試會麻煩一些,要在上面的基礎上額外對路徑做一些映射。

因為 React 我們是直接寫 jsx、tsx,它和編譯之后的 js 文件一一對應,而 Vue 不是,Vue 我們寫的是 SFC(single file component) 格式的文件,需要 vue-loader 來把它們分成不同的文件,所以路徑單獨映射一下,才能對應到源碼位置。

也就是調試配置里多了個 sourceMapPathOverrides:

那怎么映射呢?

可以在源碼里隨便加個 debugger,在瀏覽器里看下現在映射的路徑是啥:

這里的 webpack://test-vue-debug/src/App.vue?11c4 就是要映射的路徑,那映射到哪里呢?

很明顯是映射到本地的路徑,也就是這樣:

workspaceRoot 是 vscode 提供的環境變量,就是項目的跟路徑,這樣一映射之后,地址不就變成本地的文件了么?那么在本地文件中打斷點就能生效了:

看這里的路徑,明顯映射到項目下的文件了。

但是映射的時候后面還帶了個 hash,這個 hash 是會變得,怎么辦呢?

這個路徑是可以配置的,這其實就是 webpack 生成 sourcemap 的時候的文件路徑,可以通過 output.devtoolModuleFilenameTemplate 來配置:

可用的變量大家可以看文檔,就不展開了(隨便看一下就行):

比如我把路徑配成了這樣:

那調試時的文件路徑就是這樣的:

前綴不用管,就看后面的部分,這不就去掉了 ?hash 了么?

然后把它映射到本地文件:

這樣就又映射上了,在 vscode 打的斷點就生效了:

不管你是想調試 Vue 業務代碼,還是想看 Vue 源碼,體驗都會很爽的。

總結

作為前端工程師,調試 Vue、React 代碼是每天都要做的事情,不同的調試方式體驗和效率都是不一樣的。所以我想把我常用的 VSCode 調試網頁的方式介紹給大家。

React 的調試相對簡單,只要添加一個 chrome 類型的 dubug 配置就行,Vue 的調試要麻煩一些,要做一次路徑映射,如果路徑里有 hash,還要改下生成路徑的配置,然后再映射(但也只需要配一次)。

用 VSCode 來調試 React/Vue 代碼,不管是調試業務代碼,還是想看會源碼都是很方便的。大家不妨試一下,會讓調試這件事情變得很愉悅的。

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2024-11-18 08:33:56

2021-08-16 12:13:02

SwiftUIList ArticleList

2016-09-08 23:58:42

云運維 云數據中心

2021-09-01 10:35:19

asyncawaitVue

2023-09-20 15:02:13

物聯網

2020-06-05 07:52:25

程序員離職編碼

2022-09-07 11:34:49

人工智能智能建筑

2021-06-16 18:16:22

Windows 10Windows操作系統

2021-01-14 09:59:07

JS代碼編碼

2021-09-22 11:05:19

JS代碼前端

2025-06-20 08:14:55

2020-08-13 10:11:14

物聯網安全智能家居物聯網

2010-09-01 20:30:14

虛擬園區網網絡架構H3C

2015-10-28 14:03:32

數據遷移數據

2020-02-27 13:43:14

Emacs俄羅斯方塊應用

2022-09-08 10:32:24

AI人工智能

2015-04-02 12:42:26

HDFS分層存儲高效

2021-04-25 15:17:29

代碼軟件程序員

2023-03-21 10:13:32

2020-06-16 13:22:22

AI創新深度學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲日韩欧美一区二区在线 | 欧美日韩免费一区二区三区 | 91亚洲精品国偷拍自产在线观看 | 97精品国产97久久久久久免费 | 欧美在线二区 | 久久99视频精品 | 午夜影院操| 欧美高清视频一区 | m豆传媒在线链接观看 | 精品麻豆剧传媒av国产九九九 | 精品一二三 | 免费精品视频一区 | 国产高清精品一区二区三区 | 久久久久www | 国产aⅴ | 久久久国产一区二区三区 | 国产精品免费在线 | 日韩视频在线一区 | 特级丰满少妇一级aaaa爱毛片 | 美女操网站 | 国产精品美女久久久久久免费 | 中文字幕不卡视频在线观看 | 99在线免费观看 | 久久午夜国产精品www忘忧草 | 一区二区三区四区国产 | 国产精品乱码一二三区的特点 | 蜜桃视频在线观看免费视频网站www | 蜜桃久久| 欧美日韩国产三级 | av入口| 国内自拍偷拍一区 | 久久国产亚洲精品 | 国产成人高清成人av片在线看 | 欧美美女一区二区 | 麻豆va | www.色.com| 91免费看片 | 日本 欧美 国产 | 九一国产精品 | 久久精品中文字幕 | 欧美日韩亚洲一区 |