精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我是怎么調(diào)試 Element UI 源碼的

開發(fā) 前端
今天我們調(diào)試了 Element UI 的源碼。定位到組件的代碼,是通過事件斷點的方式,因為我們知道它觸發(fā)了什么事件,但卻不知道事件處理函數(shù)在哪。但是組件的代碼是被編譯打包過的,不是最初的源碼。

??上篇文章??寫了怎么調(diào)試 antd 的源碼,反響很不錯:

圖片

但很多小伙伴是寫 Vue 的,可能平時用的是 Element UI 的組件庫,所以這篇文章就來講下怎么調(diào)試 Element UI 的源碼。

首先,我們用 Vue CLI 創(chuàng)建一個 vue2 的項目:

yarn global add @vue/cli

vue create element-vue-test

創(chuàng)建成功后,進入到項目目錄

圖片

安裝 element ui 的庫,并在入口引入:

圖片

然后在 App.vue 里用一下 button 組件

圖片

之后 yarn run serve 把開發(fā)服務(wù)跑起來,就可以看到這樣的頁面:

圖片

Element UI 的組件正確的顯示了。

接下來調(diào)試 button 組件的源碼,那問題來了,我怎么知道在哪里打斷點呢?

我們可以知道的是,這個 button 會處理點擊事件,但是卻不知道事件處理函數(shù)的代碼在什么地方。

這種情況可以加一個事件斷點:

圖片

在 sources 面板的 Event Listener Breakponts 里勾選 Mouse 的 click 事件,也就是在所有 click 事件的處理函數(shù)處斷住。

然后你再點下那個按鈕試試看:

圖片

你會發(fā)現(xiàn)它在事件處理函數(shù)處斷住了。

當(dāng)你知道這個組件處理了什么事件,但卻不知道事件處理函數(shù)在哪的時候就可以用事件斷點。

當(dāng)然,這個事件處理函數(shù)并不是組件里的,因為 Vue 內(nèi)部會先做一些處理,然后再交給組件處理。

所以,我們要先走到組件的事件處理函數(shù):

圖片

單步執(zhí)行、再進入函數(shù)內(nèi)部,再單步執(zhí)行、再進入函數(shù)內(nèi)部,代碼就會走到組件的事件處理函數(shù):

圖片

methods、computed、props,這明顯是源碼里的了。但你再往上走兩步,會發(fā)現(xiàn)又不是最初的源碼:

圖片

template 變成了 render 函數(shù),而且還有其他組件的代碼,這明顯是被編譯打包之后的代碼。

從文件名也可以看出來:

圖片

這是一個把所有組件代碼編譯后打包到一起的文件。

這樣雖然也能調(diào)試,但肯定是不爽的,能不能直接調(diào)試組件最初的源碼呢?就是帶 template 的單文件組件那種?

是可以的,這就要用到 sourcemap 了。

sourcemap 是在編譯過程中產(chǎn)生的:

圖片

里面記錄了目標代碼和源代碼的映射關(guān)系,調(diào)試的時候可以通過它映射回源碼:

圖片

但是你去 node_modules 下看看,會發(fā)現(xiàn)沒有這個文件的 sourcemap:

圖片

那怎么生成它的 sourcemap 呢?

這就要從源碼重新編譯了。

我們從 github 把它的源碼下載下來:

git clone --depth=1 --single-branch git@github.com:ElemeFE/element.git

--depth=1 是只下載單個 commit,--single-branch 是下載單個 branch,這樣下載速度能快幾十倍,是一個加速小技巧。

進入 element 目錄,安裝依賴,你會遇到一個前端經(jīng)常頭疼的問題,node-sass 安裝報錯了:

圖片

這個問題的解決方案就是把 node 版本切換到 node-sass 版本對應(yīng)的那個。

package.json 中可以看到 node-sass 是 4.11.0

圖片

打開 node-sass 的 github 首頁:

你會看到這樣一個版本對應(yīng)關(guān)系表:

圖片

4.11 對應(yīng) node11,那就把 node 切換到 11 就可以了。

然后再次 yarn 安裝依賴就能成功了。

之后開始編譯,在 npm scripts 中可以找到 dist 命令,這就是構(gòu)建源碼用的:

圖片

但是我們只需要 element-ui.common.js 這個文件:

圖片

其實只需要執(zhí)行其中的一部分腳本,也就是這個:

圖片

所以在項目下執(zhí)行 npx webpack --config build/webpack.common.js 即可:

圖片

然后在 lib 下就可以看到構(gòu)建產(chǎn)物:

圖片

但我們的目標是生成帶有 source-map 的代碼,所以要改下配置:

修改 build/webpack.common.js,配置 devtool 為 cheap-module-source-map:

圖片

source-map 是生成 sourcemap 并關(guān)聯(lián),也就是這樣:

圖片

module 是把中間 loader 產(chǎn)生的 sourcemap 也給合并到最終的 sourcemap 里,這樣才能直接映射到源碼。

cheap 是加快編譯速度用的,只保留行的映射信息。

改完配置后再次 yarn run dist,就可以看到帶有 sourcemap 的產(chǎn)物了:

圖片

把這倆文件復(fù)制到測試項目的 node_modules/element-ui 下覆蓋下之前的:

圖片

之后清掉 node_modules/.cache 下的緩存,重新跑 dev server:

圖片

這時會報錯提示你 node 版本太低了,你需要再把 node 版本換回來:

圖片

跑起開發(fā)服務(wù)之后,再次用之前的方式調(diào)試 button 組件的源碼:

圖片

你會發(fā)現(xiàn)現(xiàn)在的組件代碼是帶 template 語法的單文件組件的代碼了!

圖片

這就是 sourcemap 的作用。

之后你會可以在這個組件里打斷點然后調(diào)試。

有的同學(xué)可能會問,通過事件斷點進入組件內(nèi)部,這樣有點麻煩,有沒有更簡單的方式?而且 button 組件有點擊事件,但有的組件沒有呀,這些組件該怎么調(diào)試呢?

確實,有了 sourcemap 之后就有更簡單的調(diào)試方式了。

你可以在 sources 左邊看到 ELEMENT 目錄下有很多 vue 文件,這其實就是 Chrome DevTools 解析 sourcemap 之后列在這里的:

圖片

你可以直接在里面打斷點調(diào)試。

比如我們加一個 tabs 組件:

圖片

把前面添加的那個事件斷點去掉,在代碼里手動打一個斷點:

圖片

然后你就會發(fā)現(xiàn),這樣就可以調(diào)試 Element UI 組件源碼了!

圖片

當(dāng)然,有的組件找不到的時候,還是可以通過事件斷點的方式來進入組件內(nèi)部。

我們是通過 Chrome DevTools 調(diào)試的,其實用 VSCode Debugger 來調(diào)試它也是一樣的,在 Chrome DevTools 里打的斷點,在 VSCode Debugger 里同樣會斷住。

總結(jié)

今天我們調(diào)試了 Element UI 的源碼。

定位到組件的代碼,是通過事件斷點的方式,因為我們知道它觸發(fā)了什么事件,但卻不知道事件處理函數(shù)在哪。

但是組件的代碼是被編譯打包過的,不是最初的源碼。

為了調(diào)試最初的源碼,我們下載了 Element UI 的代碼,build 出了一份帶有 sourcemap 的代碼。

覆蓋項目 node_modules 下的代碼,重新跑 dev server,這時候就可以直接調(diào)試組件源碼了。

有了 sourcemap 之后,Chrome DevTools 會直接把 vue 文件列在 sources 里,我們可以找到對應(yīng)的 vue 文件來打斷點,就不用通過事件斷點來找了。

能夠調(diào)試 Element UI 源碼之后,想知道組件內(nèi)部都有哪些邏輯的話,就可以直接在源碼斷點調(diào)試了,就很香。

責(zé)任編輯:武曉燕 來源: 神光的編程秘籍
相關(guān)推薦

2021-07-02 07:06:20

調(diào)試代碼crash

2021-08-07 07:23:08

Webpack中間件模型

2022-10-19 11:17:35

2021-02-02 10:53:16

Python編程開發(fā)

2020-12-16 08:33:58

Excel數(shù)據(jù)分析FineBI

2019-02-21 23:36:09

源碼框架讀源碼

2012-05-24 14:58:55

開源代碼

2020-10-20 10:14:01

JVM內(nèi)存模型

2015-01-28 13:10:55

2019-11-25 09:29:42

團隊項目經(jīng)驗

2013-06-08 14:12:13

程序員招聘

2021-10-20 09:20:40

手機定位互聯(lián)網(wǎng)位置服務(wù)

2025-06-24 05:00:00

2022-07-31 19:57:26

react項目VSCode

2009-11-27 11:26:02

VS2003.NET不

2013-05-28 10:52:07

Android開發(fā)移動開發(fā)移動應(yīng)用

2023-03-21 17:06:24

樹莓派路由器

2015-03-26 10:05:59

UI設(shè)計師UI設(shè)計

2025-03-05 00:49:00

Win32源碼malloc

2024-10-29 09:08:07

點贊
收藏

51CTO技術(shù)棧公眾號

丝袜诱惑亚洲看片| 国产精品xxx在线观看| 中文字幕国产一区| 91香蕉亚洲精品| 色网站在线播放| 欧美电影免费观看高清| 亚洲精品一区二区三区福利| 日韩毛片在线免费看| 天堂地址在线www| 成人av在线资源网| 国产精品一区二区三| 久久久久久久蜜桃| 精品国精品国产自在久国产应用| 日韩精品在线一区二区| 国产欧美高清在线| 污污视频在线| 国产精品日日摸夜夜摸av| 春色成人在线视频| 真实新婚偷拍xxxxx| 亚洲日本免费| 久久韩剧网电视剧| 青青草福利视频| 福利片一区二区| 在线播放中文一区| www.色就是色| 色偷偷色偷偷色偷偷在线视频| 1区2区3区精品视频| 欧洲av一区| 成人免费公开视频| 精品午夜一区二区三区在线观看| 2023亚洲男人天堂| 久久亚洲精品大全| 91精品蜜臀一区二区三区在线| 亚洲免费福利视频| 亚洲天堂2024| 日本一区二区三区视频在线看| 欧美三级中文字幕在线观看| 波多野结衣乳巨码无在线| 精品国产99久久久久久| 亚洲国产高清在线观看视频| 麻豆蜜桃91| 神马午夜电影一区二区三区在线观看| 国产麻豆精品视频| 国产主播精品在线| 中文字幕一区二区久久人妻| 欧美亚洲在线| 91禁外国网站| 香蕉视频一区二区| 精品福利av| 久久久久久久久久久av| 九九精品在线观看视频| 欧美精品国产| 色在人av网站天堂精品| 最新一区二区三区| 亚洲天天影视网| 久久久999国产| 老司机成人免费视频| 天天射综合网视频| 久久亚洲精品一区| 欧美三级日本三级| 欧美成人嫩草网站| 欧美激情网友自拍| 久久精品这里有| 一区二区福利| 国产精品91视频| 亚洲精品一区二区二区| 久久精品999| 96国产粉嫩美女| 亚洲精品国产片| 成人一区二区三区视频在线观看| 国产欧美一区二区三区另类精品| 天天插天天干天天操| 91网站最新网址| 色就是色欧美| 激情视频在线观看| 亚洲午夜激情网站| 日本免费黄视频| 天天综合网站| 欧美一区二区免费观在线| 韩国av中国字幕| 中文有码一区| 久久精品中文字幕| 日本在线观看视频网站| 天堂va蜜桃一区二区三区漫画版| 国产乱人伦真实精品视频| 国产特级黄色片| 99久久精品国产网站| 日本精品免费| 在线看三级电影| 欧美日韩免费在线观看| jizzzz日本| 日韩视频一二区| 亚洲乱码国产乱码精品精| 九九九视频在线观看| 最新精品国产| 国产a∨精品一区二区三区不卡| 亚洲熟妇av乱码在线观看| 国产成人av电影在线| 日本一区二区精品视频| 丝袜美腿av在线| 色先锋久久av资源部| 国产伦精品一区二区三区妓女下载 | 成人精品毛片| 亚洲美女av电影| 久草手机视频在线观看| 99成人免费视频| 91亚洲va在线va天堂va国| 无码国精品一区二区免费蜜桃| 中文字幕不卡三区| 欧美a v在线播放| 97久久精品一区二区三区的观看方式 | 九九热精品视频| 无码人妻一区二区三区免费| 国产精品中文有码| 午夜老司机精品| 99在线视频影院| 在线成人av网站| 亚洲专区区免费| 国模 一区 二区 三区| 国产精品精品一区二区三区午夜版| 亚洲经典一区二区三区| 国产精品乱人伦中文| 中文字幕日本最新乱码视频| 狂野欧美xxxx韩国少妇| 一区二区欧美日韩视频| 日韩 欧美 综合| 国产精品一二一区| 亚洲欧洲三级| 欧美日韩免费观看视频| 精品夜色国产国偷在线| 久久成人国产精品入口| 国产综合色产在线精品| 亚洲精品日韩成人| 欧美大片免费观看网址| 日韩成人性视频| 看免费黄色录像| 久久99国产乱子伦精品免费| 日韩女优中文字幕| 欧美特黄aaaaaaaa大片| 日韩av中文在线| 尤物视频在线观看国产| 不卡一区在线观看| 国产资源在线免费观看| www.国产精品一区| 欧美激情图片区| 丰满人妻一区二区三区四区53| 亚洲最快最全在线视频| 手机在线观看日韩av| 午夜精品一区二区三区国产 | 国产精品人妖ts系列视频| 中文字幕欧美人妻精品一区| 欧美在线色图| 国产精品专区一| 国产婷婷视频在线| 91精品啪在线观看国产60岁| 免费成年人视频在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美 日韩 人妻 高清 中文| 亚洲图片有声小说| 强迫凌虐淫辱の牝奴在线观看| 亚洲免费观看| 欧美精品久久| 亚洲电影有码| 久热精品视频在线观看| www.久久精品.com| 亚洲国产精品自拍| 中文字幕日韩三级片| 亚洲一区欧美二区| 亚洲成人一区二区三区| 在线日韩三级| 国内精品久久久久久| 亚洲 另类 春色 国产| 欧洲色大大久久| 国产又粗又长又黄的视频| 国产精品影视在线| 被灌满精子的波多野结衣| 亚洲婷婷丁香| 国产日韩av在线| av观看在线| 日韩国产在线播放| 一级特黄色大片| 亚洲一区二区三区四区在线免费观看| 精品中文字幕在线播放| 日本一区中文字幕 | 亚洲永久免费| 亚洲人成网站在线观看播放| 欧美大片91| 欧美专区在线视频| 免费超碰在线| 亚洲黄色av女优在线观看| 久久影视中文字幕| 一区二区三区四区蜜桃 | 国精一区二区| 97人人模人人爽人人少妇| 色资源二区在线视频| 久久精品久久精品亚洲人| 色网站免费观看| 欧美日韩成人综合| 久久久久久久久久免费视频| 最新日韩在线视频| 中文字幕国产专区| 国产成人在线电影| 九九热免费精品视频| 狠狠综合久久| 致1999电视剧免费观看策驰影院| 欧美三级午夜理伦三级在线观看| 国产日本欧美一区| 男人最爱成人网| 久久全国免费视频| 黄色网在线免费看| 夜夜躁日日躁狠狠久久88av | 26uuu国产电影一区二区| 黄色aaaaaa| 日本成人在线不卡视频| 夜夜添无码一区二区三区| 欧美好骚综合网| 青青草久久网络| 激情小说亚洲图片| 亚洲a一级视频| 久久91视频| 国产精品91一区| 中文字幕人成乱码在线观看| 久久久久九九九九| 国产调教视频在线观看| 色yeye香蕉凹凸一区二区av| 免费在线视频一级不卡| 亚洲成人网久久久| а√中文在线资源库| 777精品伊人久久久久大香线蕉| 国产suv精品一区二区33| 天天操天天色综合| 国产一级在线观看视频| 亚洲一区免费视频| 九九热只有精品| 一区二区三区欧美在线观看| 亚洲精品久久久久久国| 国产精品无圣光一区二区| 蜜桃av乱码一区二区三区| 久久影院视频免费| 中文字幕一二三四区| 久久尤物电影视频在线观看| 亚洲永久精品ww.7491进入| 91日韩在线专区| 少妇光屁股影院| 久久久亚洲欧洲日产国码αv| 亚洲专区区免费| 国产日韩精品一区二区浪潮av| 免费观看av网站| 久久久综合九色合综国产精品| 毛片网站免费观看| 久久日韩精品一区二区五区| 性猛交娇小69hd| 国产精品私人自拍| 99成人在线观看| 亚洲精品免费一二三区| 欧美毛片在线观看| 亚洲国产欧美日韩另类综合| 日本少妇毛茸茸高潮| 性做久久久久久久久| 91视频免费网址| 在线观看一区日韩| 亚洲中文字幕在线观看| 日韩欧美一区二区不卡| 人妻丰满熟妇av无码区hd| 日韩av在线播放资源| 国产午夜在线观看| 精品国产一区二区三区久久久| 91三级在线| 97成人精品区在线播放| 国产v综合v| 亚洲自拍偷拍视频| 乱亲女h秽乱长久久久| 欧洲亚洲一区二区三区四区五区| 日韩成人三级| 美脚丝袜脚交一区二区| 六月丁香综合| 亚洲综合20p| av一区二区三区黑人| 精品人伦一区二区| 亚洲欧美色综合| 国产成人精品一区二三区| 欧美性大战久久久久久久蜜臀| 国产精品视频久久久久久| 亚洲第一国产精品| 波多野结衣在线网站| 久久久久久久久综合| 搜成人激情视频| 成人在线观看网址| 欧美日韩国产一区二区三区不卡| 国产亚洲精品久久久久久久| 亚洲影音先锋| wwwxxxx在线观看| 国产午夜精品一区二区三区四区| 精品自拍偷拍视频| 一本高清dvd不卡在线观看| 国产女人18毛片18精品| 亚洲男人天堂网站| caopo在线| 国产精品劲爆视频| 欧美电影在线观看免费| 在线成人性视频| 男女精品网站| 人妻 丝袜美腿 中文字幕| 日本一区二区免费在线| 中文字幕第28页| 欧美二区三区91| 久久精品a一级国产免视看成人| 欧美二区在线播放| 精品无人乱码一区二区三区| 精品卡一卡二| 中文字幕一区二区av| 亚洲欧洲日本精品| 91影院在线观看| 国产午夜精品无码一区二区| 欧美精品三级在线观看| 男生女生差差差的视频在线观看| 欧美日韩第一视频| 亚洲在线资源| 亚洲国产精品www| 老司机午夜免费精品视频| 日韩Av无码精品| 一区二区三区在线免费播放| 97人妻人人澡人人爽人人精品| 亚洲欧美精品中文字幕在线| a√中文在线观看| 成人情视频高清免费观看电影| 香蕉综合视频| 欧美成人乱码一二三四区免费| 久久久久免费观看| 久久久久久久久久久久久久av| 日韩女优av电影在线观看| 久操视频在线免费播放| 国产精品永久免费视频| 精品国产一区二区三区av片| 六月激情综合网| 91农村精品一区二区在线| 亚洲精品77777| 亚洲精品视频免费| 日韩电影毛片| 精品久久精品久久| 亚洲麻豆av| 日韩一级视频在线观看| 欧美性极品xxxx娇小| 黄色网址在线播放| 国产成人亚洲综合91| 成人av国产| 亚洲综合日韩欧美| 亚洲欧洲在线观看av| 国产精品人妻一区二区三区| 蜜臀久久99精品久久久久久宅男| 国产精品一区二区美女视频免费看 | 久久久久国产精品无码免费看| 亚洲成人综合在线| 涩涩视频免费看| 日产精品99久久久久久| 成人综合专区| 日韩不卡的av| 一区二区三区四区乱视频| 黄频在线免费观看| 69久久夜色精品国产69乱青草| 亚洲精品合集| www.欧美日本| 国产精品国产三级国产aⅴ无密码| 日日骚av一区二区| 亚洲午夜精品视频| 亚洲国产天堂| 亚洲高清资源综合久久精品| 老妇喷水一区二区三区| 91ts人妖另类精品系列| 欧美日韩一区二区三区四区五区 | 亚洲欧美日韩成人在线| 国产97色在线| 日韩久久精品| www.欧美com| 色综合天天综合色综合av| 欧美人xxx| 国产亚洲欧美一区二区| 久久综合图片| 麻豆精品一区二区三区视频| 欧美精品一区二区久久婷婷| 香蕉久久免费电影| 老司机午夜网站| 99国内精品久久| 91福利在线观看视频| 久久久在线视频| 久久婷婷蜜乳一本欲蜜臀| 少妇熟女视频一区二区三区| 色欧美乱欧美15图片| 亚洲小说区图片| 欧美理论一区二区| 国产麻豆精品95视频| 国产伦精品一区二区三区视频我| 久久久国产视频91| 日本午夜精品| 免费人成视频在线播放| 91久久一区二区| 黄网在线免费看| 视频在线一区二区三区| 成人午夜免费电影| 国产又粗又猛又爽又黄的视频一 |