欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在React中實現(xiàn)代碼熱重載(HMR)的操作步驟

 更新時間:2025年05月15日 10:10:13   作者:幾何心涼  
在現(xiàn)代 React 開發(fā)中,代碼熱重載(HMR)是一項極大提升開發(fā)效率的技術(shù),它允許在不刷新整個頁面的情況下,實時更新模塊代碼,從而保留應(yīng)用狀態(tài),避免因頁面刷新導(dǎo)致的狀態(tài)丟失,本文將深入探討如何在 React 項目中實現(xiàn) HMR,包括其原理、配置步驟以及最佳實踐

一、HMR 的工作原理

HMR 的核心在于通過 Webpack 的能力,在應(yīng)用運行時替換、添加或刪除模塊,而無需重新加載整個頁面。其主要流程如下:

  1. 文件監(jiān)聽與編譯:Webpack 通過 webpack-dev-server 監(jiān)聽源代碼的變化,一旦檢測到文件變動,立即重新編譯受影響的模塊。

  2. 模塊更新通知:編譯完成后,webpack-dev-server 通過 WebSocket 向瀏覽器發(fā)送更新通知,包含更新的模塊信息。

  3. 模塊替換執(zhí)行:瀏覽器接收到更新通知后,使用 HMR Runtime 替換舊模塊,執(zhí)行新的模塊代碼,實現(xiàn)模塊的熱更新。

這種機制確保了在開發(fā)過程中,代碼的修改能夠即時反映在瀏覽器中,而無需手動刷新頁面,從而提高開發(fā)效率。

二、在 React 項目中配置 HMR

1. 使用 create-react-app(CRA)

如果你的項目是通過 create-react-app 創(chuàng)建的,HMR 已經(jīng)默認集成,無需額外配置。你只需運行:

npm start

即可享受 HMR 帶來的開發(fā)便利。

2. 自定義 Webpack 配置

對于自定義配置的 React 項目,需要手動設(shè)置 HMR。以下是配置步驟:

a. 安裝必要的依賴

npm install --save-dev webpack webpack-cli webpack-dev-server react-refresh @pmmmwh/react-refresh-webpack-plugin

b. 配置 Webpack

在 webpack.config.js 中進行如下配置:

const path = require('path');
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
    publicPath: '/',
  },
  devServer: {
    hot: true,
    open: true,
    port: 3000,
    static: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            plugins: [require.resolve('react-refresh/babel')],
          },
        },
      },
    ],
  },
  plugins: [new ReactRefreshWebpackPlugin()],
};

此配置中,ReactRefreshWebpackPlugin 插件與 react-refresh/babel 插件共同作用,實現(xiàn) React 組件的熱更新。

c. 啟動開發(fā)服務(wù)器

在 package.json 中添加啟動腳本:

"scripts": {
  "start": "webpack serve --config webpack.config.js"
}

然后運行:([cn.mobx.js.org][1])

npm start

即可啟動帶有 HMR 功能的開發(fā)服務(wù)器。([webpack][2])

三、最佳實踐與注意事項

  1. 狀態(tài)保留:HMR 能夠保留組件狀態(tài),但需確保組件的狀態(tài)管理邏輯不會因模塊替換而重置。

  2. 錯誤處理:在開發(fā)過程中,確保對可能出現(xiàn)的錯誤進行適當(dāng)處理,避免因錯誤導(dǎo)致 HMR 失敗。

  3. 插件兼容性:使用 HMR 時,確保所用的插件與 HMR 兼容,避免因插件不兼容導(dǎo)致熱更新失敗。

  4. 生產(chǎn)環(huán)境禁用:HMR 主要用于開發(fā)環(huán)境,生產(chǎn)環(huán)境應(yīng)禁用 HMR,以避免不必要的性能開銷。

到此這篇關(guān)于在React中實現(xiàn)代碼熱重載(HMR)的操作步驟的文章就介紹到這了,更多相關(guān)React代碼熱重載HMR內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React捕獲并處理異常的方式

    React捕獲并處理異常的方式

    這篇文章主要給大家介紹了React優(yōu)雅的捕獲并處理渲染異常方式,文章通過代碼示例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • React報錯之Object?is?possibly?null的問題及解決方法

    React報錯之Object?is?possibly?null的問題及解決方法

    這篇文章主要介紹了React報錯之Object?is?possibly?null的問題,造成 "Object is possibly null"的錯誤是因為useRef()鉤子可以傳遞一個初始值作為參數(shù),而我們傳遞null作為初始值,本文給大家分享詳細解決方法,需要的朋友可以參考下
    2022-07-07
  • react時間分片實現(xiàn)流程詳解

    react時間分片實現(xiàn)流程詳解

    實現(xiàn)react時間分片,主要內(nèi)容包括什么是時間分片、為什么需要時間分片、實現(xiàn)分片開啟 - 固定、實現(xiàn)分片中斷、重啟 - 連續(xù)、分片重啟、實現(xiàn)延遲執(zhí)行 - 有間隔、時間分片異步執(zhí)行方案的演進、時間分片簡單實現(xiàn)、總結(jié)、基本概念、基礎(chǔ)應(yīng)用、原理機制和需要注意的事項等
    2022-11-11
  • React創(chuàng)建組件的的方式匯總

    React創(chuàng)建組件的的方式匯總

    React 是一個用于構(gòu)建用戶界面的 JAVASCRIPT 庫。這篇文章主要介紹了React組件的兩種創(chuàng)建方式,一種是使用函數(shù)創(chuàng)建組件另一種是使用類創(chuàng)建組件,需要的朋友可以參考下
    2021-11-11
  • react組件的創(chuàng)建與更新實現(xiàn)流程詳解

    react組件的創(chuàng)建與更新實現(xiàn)流程詳解

    React組件分為函數(shù)組件與class組件;函數(shù)組件是無狀態(tài)組件,class稱為類組件;函數(shù)組件只有props,沒有自己的私有數(shù)據(jù)和生命周期函數(shù);class組件有自己私有數(shù)據(jù)(this.state)和生命周期函數(shù)
    2022-10-10
  • react-native只保留3x圖原理解析

    react-native只保留3x圖原理解析

    這篇文章主要為大家介紹了react-native只保留3x圖原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 淺談React中組件間抽象

    淺談React中組件間抽象

    這篇文章主要介紹了淺談React中組件間抽象,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • React受控組件與非受控組件詳細介紹

    React受控組件與非受控組件詳細介紹

    具體來說這是一種react非受控組件,其狀態(tài)是在input的react內(nèi)部控制,不受調(diào)用者控制??梢允褂檬芸亟M件來實現(xiàn)。下面就說說這個React中的受控組件與非受控組件的相關(guān)知識,感興趣的朋友一起看看吧
    2022-09-09
  • React合成事件詳解

    React合成事件詳解

    這篇文章主要介紹了React合成事件的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-05-05
  • 詳解React中組件之間通信的方式

    詳解React中組件之間通信的方式

    這篇文章主要介紹了React中組件之間通信的方式,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07

最新評論