webpack如何實現熱模組替換
這次帶給大家webpack如何實現熱模組替換,webpack實現熱模組替換的注意事項有哪些,下面就是實戰案例,一起來看一下。
模組熱替換(HMR)的作用是,在應用運行時,無需刷新頁面,便能替換、增加、刪除必要的模組。 HMR 對於那些由單一狀態樹構成的應用非常有用。因為這些應用的組件是 “dumb” (相對於 “smart”) 的,所以在組件的程式碼變更後,組件的狀態依然能夠正確反映應用的最新狀態。
webpack-dev-server內建“live reload”,會自動重新整理頁面。
檔案目錄如下:
app
#a.js
#component.js
index.js
#node_modules
#package.json
#component.js中導入了a.js。 index.js導入了component.js。修改任一文件,都能達到熱更新功能。 最重要的是,在index.js中,有這樣一段程式碼:(完成熱更新必須需要)
if(module.hot){ module.hot.accept(moduleId, callback); }
下面是package.json設定:{
"name": "webpack-hmr",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon --watch webpack.config.js --exec \"webpack-dev-server --env development\"",
"build": "webpack --env production"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^2.28.0",
"nodemon": "^1.11.0",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.4.1"
}
}
關於”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;
};
引用
env參數透過cli傳入。
然後開啟指令列到目前目錄,執行npm start或npm run build就好啦。請注意,前者是在開發環境下,是沒有輸出檔案的(在記憶體),只有執行後者才會有輸出檔。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! 推薦閱讀:
以上是webpack如何實現熱模組替換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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