首頁 web前端 js教程 webpack如何實現熱模組替換

webpack如何實現熱模組替換

May 02, 2018 am 10:49 AM
web webpack 替換

這次帶給大家webpack如何實現熱模組替換,webpack實現熱模組替換的注意事項有哪些,下面就是實戰案例,一起來看一下。

模組熱替換(HMR)的作用是,在應用運行時,無需刷新頁面,便能替換、增加、刪除必要的模組。 HMR 對於那些由單一狀態樹構成的應用非常有用。因為這些應用的組件是 “dumb” (相對於 “smart”) 的,所以在組件的程式碼變更後,組件的狀態依然能夠正確反映應用的最新狀態。

webpack-dev-server內建“live reload”,會自動重新整理頁面。

檔案目錄如下:

  1. app

    1. #a.js

    2. #component.js

    3. index.js

  2. #node_modules

#package.json

webpack.config.js

#component.js中導入了a.js。 index.js導入了component.js。修改任一文件,都能達到熱更新功能。 最重要的是,在index.js中,有這樣一段程式碼:(完成熱更新必須需要)

if(module.hot){
  module.hot.accept(moduleId, callback);
}
登入後複製

下面是package.json設定:

從依賴就可以看到,這真的是一個最簡單的配置了。其中nodemon用來監聽webpack.config.js檔案的狀態,只要改變,就重新執行指令。

關於”html-webpack-plugin”,這裡是可以省略的。具體的設定請看:

https://

www.npmjs.com/package/html-webpack-plugin 。

在這裡,定義了兩個指令,一個是start,用來開發環境;一個是build,用來生產環境。 --watch用來監聽一個或多個文件,--exec是nodemon用來執行其它的指令。具體的配置請看:https://c9.io/remy/nodemon。

接下來是webpack.config.js了,既然package.json的scripts中定義了兩個指令,我們還是要在

設定檔

中實作兩種情況(development和production ,你也可以修改配置其中一種)。

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
const PATHS = {
 app: path.join(dirname, 'app'),
 build: path.join(dirname, 'build'),
};
const commonConfig={
 entry: {
  app: PATHS.app + '/index.js',
 },
 output: {
  path: PATHS.build,
  filename: '[name].js',
 },
 watch: true,
 plugins: [
  new HtmlWebpackPlugin({
   title: 'Webpack demo',
  }),
 ],
}
function developmentConfig(){
 const config ={
  devServer:{
   historyApiFallback:true, //404s fallback to ./index.html
   // hotOnly:true, 使用hotOnly和hot都可以
   hot: true,
   stats:'errors-only', //只在发生错误时输出
   // host:process.env.Host, 这里是undefined,参考的别人文章有这个
   // port:process.env.PORT, 这里是undefined,参考的别人文章有这个
   overlay:{ //当有编译错误或者警告的时候显示一个全屏overlay
    errors:true,
    warnings:true,
   }
  },
   plugins: [
   new webpack.HotModuleReplacementPlugin(),
   new webpack.NamedModulesPlugin(), // 更新组件时在控制台输出组件的路径而不是数字ID,用在开发模式
   // new webpack.HashedModuleIdsPlugin(), // 用在生产模式
  ],
 };
 return Object.assign( 
  {},
  commonConfig,
  config,
  {
   plugins: commonConfig.plugins.concat(config.plugins),
  }
 );
}
module.exports = function(env){
 console.log("env",env);
 if(env=='development'){
  return developmentConfig();
 }
 return commonConfig;
};
關於Object.assign,第一個參數是目標對象,如果目標對像中的屬性具有相同的鍵,則屬性將被來源中的屬性覆寫。後來的源的屬性將類似地覆蓋早先的屬性。淺賦值,對於物件的複製使用=,即
引用

複製。

env參數透過cli傳入。
然後開啟指令列到目前目錄,執行npm start或npm run build就好啦。請注意,前者是在開發環境下,是沒有輸出檔案的(在記憶體),只有執行後者才會有輸出檔。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! 推薦閱讀:

###mint-ui使用步驟詳解################JS有哪些屬性可以判斷頁面是否存在捲軸###############常用的6大JS排序演算法與比較##########

以上是webpack如何實現熱模組替換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

5分鐘掌握PyCharm替換快捷鍵,輕鬆提升程式速度! 5分鐘掌握PyCharm替換快捷鍵,輕鬆提升程式速度! Feb 22, 2024 am 10:57 AM

PyCharm是一款常用的Python整合開發環境,擁有豐富的功能和快速鍵,能夠幫助開發者提高程式效率。在日常的程式設計過程中,掌握PyCharm的替換快速鍵技巧可以幫助開發者更快速地完成任務。本文將為大家介紹PyCharm中一些常用的替換快捷鍵,幫助大家輕鬆提升程式速度。 1.Ctrl+R替換在PyCharm中,可以使用Ctrl+R快捷鍵來進行替換操

web標準是什麼東西 web標準是什麼東西 Oct 18, 2023 pm 05:24 PM

Web標準是一組由W3C和其他相關組織制定的規範和指南,它包括HTML、CSS、JavaScript、DOM、Web可訪問性和性能優化等方面的標準化,透過遵循這些標準,可以提高頁面的兼容性、可訪問性、可維護性和效能。 Web標準的目標是使Web內容能夠在不同的平台、瀏覽器和裝置上一致地展示和交互,提供更好的使用者體驗和開發效率。

使用jQuery替換元素的class名稱 使用jQuery替換元素的class名稱 Feb 24, 2024 pm 11:03 PM

jQuery是一種經典的JavaScript庫,被廣泛應用於網頁開發中,它簡化了在網頁上處理事件、操作DOM元素和執行動畫等操作。在使用jQuery時,常會遇到需要取代元素的class名稱的情況,本文將介紹一些實用的方法,以及具體的程式碼範例。 1.使用removeClass()和addClass()方法jQuery提供了removeClass()方法來刪除

PyCharm新手指南:取代功能全面解析 PyCharm新手指南:取代功能全面解析 Feb 25, 2024 am 11:15 AM

PyCharm是一款功能強大的Python整合開發環境,具有豐富的功能與工具,能夠大幅提升開發效率。其中,替換功能是開發過程中常用的功能之一,能夠幫助開發者快速修改程式碼並提高程式碼品質。本文將詳細介紹PyCharm的替換功能,並結合具體的程式碼範例,幫助新手更好地掌握和使用該功能。替換功能簡介PyCharm的替換功能可以幫助開發者在程式碼中快速替換指定的文本

如何從駕駛艙Web使用者介面啟用管理訪問 如何從駕駛艙Web使用者介面啟用管理訪問 Mar 20, 2024 pm 06:56 PM

Cockpit是一個面向Linux伺服器的基於Web的圖形介面。它主要是為了使新用戶/專家用戶更容易管理Linux伺服器。在本文中,我們將討論Cockpit存取模式以及如何從CockpitWebUI切換Cockpit的管理存取。內容主題:駕駛艙進入模式查找當前駕駛艙訪問模式從CockpitWebUI啟用Cockpit的管理訪問從CockpitWebUI禁用Cockpit的管理訪問結論駕駛艙進入模式駕駛艙有兩種訪問模式:受限訪問:這是駕駛艙的默認訪問模式。在這種存取模式下,您無法從駕駛艙Web用戶

PyCharm取代快捷鍵,讓程式設計更得心應手! PyCharm取代快捷鍵,讓程式設計更得心應手! Feb 21, 2024 pm 12:03 PM

PyCharm是一款廣受程式設計師歡迎的整合開發環境,它提供了強大的功能和工具,讓程式設計變得更有效率和便利。而在PyCharm中,合理設定和取代快捷鍵是提高程式效率的關鍵之一。本文將介紹如何在PyCharm中取代快捷鍵,讓程式設計更得心應手。一、為什麼要替換快捷鍵在PyCharm中,快速鍵可以幫助程式設計師快速完成各種操作,提高程式效率。然而,每個人習慣不同,有些人可能

web是什麼意思 web是什麼意思 Jan 09, 2024 pm 04:50 PM

web是全球廣域網,也稱為萬維網,是互聯網的一種應用形式。 Web 是一種基於超文本和超媒體的資訊系統,它允許使用者透過超連結在不同的網頁之間跳轉,從而瀏覽和獲取資訊。 Web 的基礎是互聯網,它使用統一、標準化的協定和語言,使得不同電腦之間能夠進行資料交換和資訊共享。

如何使用Python在Excel中取代一個單字? 如何使用Python在Excel中取代一個單字? Sep 16, 2023 pm 10:21 PM

在Python中,我們可以使用一個名為openpyxl的第三方Python函式庫將Excel中的一個字替換為另一個字。 MicrosoftExcel是一個用於管理和分析資料的有用工具。使用Python,我們可以自動化一些Excel資料管理任務。在本文中,我們將了解如何使用Python在Excel中取代一個單字。安裝openpyxl在Excel中取代Word之前,我們需要使用Python套件管理器在系統中安裝openpyxl函式庫。若要安裝openpyxl,請在終端機或命令提示字元中輸入以下命令。 Pipinst

See all articles