最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vscode調(diào)試react?最初的源碼解析

 更新時(shí)間:2023年11月13日 10:45:18   作者:hellopari  
這篇文章主要介紹了vscode調(diào)試react?最初的源碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友跟隨小編一起看看吧

如果直接在react項(xiàng)目中打點(diǎn)調(diào)試, 調(diào)試的是 react-dom.development.js,

而源碼里這些邏輯是分散在不同的包里的,如何才能夠調(diào)試 React 最初的源碼呢?
JS 代碼經(jīng)過編譯,會產(chǎn)生目標(biāo)代碼,但同時(shí)也會產(chǎn)生 sourcemap。sourcemap 的作用就是映射目標(biāo)代碼中的位置和源碼中的位置。
那這么說我們只要讓 react-dom.development.js 關(guān)聯(lián)上 sourcemap,就能調(diào)試最初的 React 源碼了?

步驟如下:

  • git clone https://github.com/facebook/react
  • 為了保證一定能正常生成 sourcemap,建議 reset 到
  • git reset --hard 80f3d88190c07c2da11b5cac58a44c3b90fbc296
  • 打開package 里的構(gòu)建打包文件: ./scripts/rollup/build.js

找到 rollup 的配置,添加一行 sourcemap: true,這個很容易理解,就是讓 rollup 在構(gòu)建時(shí)產(chǎn)生 sourcemap:

構(gòu)建的過程中會進(jìn)行多次轉(zhuǎn)換,會生成多次 sourcemap,然后把 sourcemap 串聯(lián)起來就是最終的 sourcemap。如果中間有一步轉(zhuǎn)換沒有生成 sourcemap,那就斷掉了,也就沒法把 sourcemap 串聯(lián)起來了。只要找出沒有生成 sourcemap 的那幾個插件注釋掉就可以了, 同樣在/scripts/rollup/build.js文件中: 這個是刪除 use strict 用的,可以去掉:

2:這個是生產(chǎn)環(huán)境壓縮代碼的,也可以去掉

3:這個是用 prettier 格式化代碼的,也可以去掉。

npm run build, 這樣我們就成功的 build 出了帶有 sourcemap 的 react 包!

我們已經(jīng) build 出了帶有 sourcemap 的 react 和 react-dom 包,那把這倆包復(fù)制到測試項(xiàng)目的 node_modules 下,就可以直接調(diào)試最初的源碼了么?

我們改造了 build 流程,對 react 源碼進(jìn)行了 build,產(chǎn)生了帶有 sourcemap 的 react、react-dom 包,這些包最終導(dǎo)出的是 react-xx.development.js。
之后在項(xiàng)目里引入,經(jīng)過 webpack 打包,產(chǎn)生了 bundle.js 和 sourcemap。
之后調(diào)試工具運(yùn)行代碼的時(shí)候,會解析 sourcemap,完成從 bundle.js 到 react-xxx.development.js 的映射:

但是并不會再次做 react-xx.development.js 到 react 最初源碼的映射呀。
也就是調(diào)試工具只會解析一次 sourcemap。
那怎么辦呢?
不打包 react 和 react-dom 這倆包不就行了。不經(jīng)過 webpack 打包,那就沒有 webpack 產(chǎn)生的 sourcemap,不就一次就映射到 React 最初的源碼了么。
那怎么不打包這倆模塊呢?
webpack 支持 externals 來配置一些模塊使用全局變量而不進(jìn)行打包,這樣我們就可以單獨(dú)加載 react、react-dom,然后把他們導(dǎo)出的全局變量配置到 externals 就行了。

初始化一個react項(xiàng)目

npx create-react-app my-app

新建 .vscode/launch.json

{
“configurations”: [
{
“name”: “Launch Chrome”,
“request”: “l(fā)aunch”,
“type”: “pwa-chrome”,
“url”: “http://localhost:3000”,
“webRoot”: “${workspaceFolder}”
}
]
}

npm run eject: 項(xiàng)目下會多出 config 目錄和 public 目錄,這倆分別放著 webpack 配置和一些公共文件。修改 webpack 配置,在 externals 下添加 react 和 react-dom 包對應(yīng)的全局變量:注意這里的大小寫要小心,不能寫錯

5. 然后把 react.development.js 和 react-dom.development.js 放到 public 下,并在 index.html 里面加載這倆文件:

這樣就表示成功了

參考鏈接:

https://juejin.cn/post/7126501202866470949

到此這篇關(guān)于vscode調(diào)試react 最初的源碼的文章就介紹到這了,更多相關(guān)vscode調(diào)試react 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React基于RBAC的權(quán)限控制案例講解

    React基于RBAC的權(quán)限控制案例講解

    這篇文章主要介紹了React基于RBAC的權(quán)限控制,通過定義角色和權(quán)限、編寫權(quán)限檢查函數(shù)以及在路由、組件和選擇控件中使用這些函數(shù),可以靈活地控制應(yīng)用中的訪問權(quán)限,需要的朋友可以參考下
    2024-05-05
  • react實(shí)現(xiàn)每隔60s刷新一次接口的示例代碼

    react實(shí)現(xiàn)每隔60s刷新一次接口的示例代碼

    本文主要介紹了react實(shí)現(xiàn)每隔60s刷新一次接口的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • react-dnd?API拖拽工具詳細(xì)用法示例

    react-dnd?API拖拽工具詳細(xì)用法示例

    這篇文章主要為大家介紹了react-dnd?API拖拽工具的詳細(xì)用法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 使用 Rails API 構(gòu)建一個 React 應(yīng)用程序的詳細(xì)步驟

    使用 Rails API 構(gòu)建一個 React 應(yīng)用程序的詳細(xì)步驟

    這篇文章主要介紹了使用 Rails API 構(gòu)建一個 React 應(yīng)用程序的詳細(xì)步驟,主要包括后端:Rails API部分,前端:React部分及React組件的相關(guān)操作,具有內(nèi)容詳情跟隨小編一起看看吧
    2021-08-08
  • React虛擬列表的實(shí)現(xiàn)

    React虛擬列表的實(shí)現(xiàn)

    在開發(fā)過程中,總是遇到很多列表的顯示。當(dāng)上數(shù)量級別的列表渲染于瀏覽器,終會導(dǎo)致瀏覽器的性能下降,你可以選擇其他方式避免,本文就介紹了虛擬列表來解決這個問題
    2021-05-05
  • react組件從搭建腳手架到在npm發(fā)布的步驟實(shí)現(xiàn)

    react組件從搭建腳手架到在npm發(fā)布的步驟實(shí)現(xiàn)

    這篇文章主要介紹了react組件從搭建腳手架到在npm發(fā)布的步驟實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • react-native使用leanclound消息推送的方法

    react-native使用leanclound消息推送的方法

    這篇文章主要介紹了react-native使用leanclound消息推送的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • ReactNative環(huán)境搭建的教程

    ReactNative環(huán)境搭建的教程

    這篇文章主要介紹了ReactNative環(huán)境搭建的教程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • React Hook用法示例詳解(6個常見hook)

    React Hook用法示例詳解(6個常見hook)

    這篇文章主要介紹了React Hook用法詳解(6個常見hook),本文通過實(shí)例代碼給大家介紹了6個常見hook,需要的朋友可以參考下
    2021-04-04
  • ReactNative 之FlatList使用及踩坑封裝總結(jié)

    ReactNative 之FlatList使用及踩坑封裝總結(jié)

    本篇文章主要介紹了ReactNative 之FlatList使用及踩坑封裝總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

晴隆县| 喜德县| 浦江县| 旬阳县| 祁连县| 淳化县| 新丰县| 阿巴嘎旗| 新平| 金堂县| 罗城| 平潭县| 岗巴县| 香河县| 门头沟区| 磐石市| 雷波县| 遂平县| 武夷山市| 宝兴县| 确山县| 砀山县| 通城县| 天柱县| 苍山县| 永德县| 襄汾县| 甘南县| 太仓市| 县级市| 锡林浩特市| 鹤壁市| 防城港市| 仲巴县| 黔西县| 安平县| 安泽县| 青海省| 额济纳旗| 永寿县| 灵璧县|