vue 程式碼除錯神器

匠工精神發表於2022-05-02

一、序

工欲善其事,必先利其器。作為一名資深程式設計師,相信必有一款除錯神器相伴左右,幫助你快速發現問題,解決問題。作為前端開發,我還很年輕,也喜歡去搗鼓一些東西,藉著文章的標題,先提一個問題:大家目前是怎麼除錯前端?哈哈,我也大膽的猜測下,可能有這麼幾種:

不除錯,直接看程式碼找問題
console.log 列印日誌
用 Chrome Devtools 的 debugger 來除錯
用 VSCode 的 debugger 來除錯
以上方式我相信大家基本都用過,不同的除錯方式效率和體驗是不一樣的,我現在基本都是用 VSCode debugger 來除錯,效率又高、體驗又爽。

今天我就來介紹下怎麼用 VSCode除錯網頁。

二、實踐

還是以之前的小demo來做演示,首先我們需要在專案根路徑下新增一個

.vscode/launch.json

的配置檔案,其內容如下:

{
"configurations": [
{
"name": "Launch",
"request": "launch",
"type": "pwa-chrome",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}",
"sourceMapPathOverrides": {
"villiam://src/": "${workspaceFolder}/src/"
}
}
]
}

建立了一個除錯配置,型別是 chrome,並指定除錯的 url 是開發伺服器的地址。

因為 Vue 我們寫的是 SFC(single file component) 格式的檔案,需要 vue-loader 來把它們分成不同的檔案,所以路徑單獨對映一下,才能對應到原始碼位置。

所以除錯配置裡需要加個

sourceMapPathOverrides:

"sourceMapPathOverrides": {
"villiam://src/": "${workspaceFolder}/src/"
}

那麼這裡面的值是怎麼來的呢?首先workspaceRoot 是 vscode 提供的環境變數,就是專案的跟路徑,這樣一對映之後,地址不就變成本地的檔案了麼?那麼在本地檔案中打斷點就能生效了。那左邊的key值是怎麼來的呢?其實這個路徑是可以配置的,這其實就是 webpack 生成 sourcemap 的時候的檔案路徑,可以通過 output.devtoolModuleFilenameTemplate 來配置:

configureWebpack:{
output:{
devtoolModuleFilenameTemplate:'villiam://[resource-path]'
}
}

以上其實我們已經把除錯的配置全部完成了,接下來我們就一起來見證下奇蹟~

啟動:

file

會先開啟瀏覽器:

file

點選按鈕後,進入斷點:

file

不管你是想除錯 Vue 業務程式碼,還是想看 Vue 原始碼,體驗都會很爽的。

三、小結

今天給大家分享的是一個除錯小技巧,方便我們查詢定位問題用,希望在工作中提升你的效率。

其實React 的除錯相對簡單,只要新增一個 chrome 型別的 dubug 配置就行,Vue 的除錯要麻煩一些,要做一次路徑對映。

有興趣的可以走一波。

歡迎關注file

相關文章