亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

webpack熱模塊替換(HMR)/熱更新的方法

2024-05-06 16:43:34
字體:
來源:轉載
供稿:網友

這是一篇關于webpack熱模塊替換的最簡單的配置(不需要react),也稱作熱更新。

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

webpack-dev-server內置“live reload”,會自動刷新頁面。

文件目錄如下:

  1. app
    1. a.js
    2. component.js
    3. index.js
  2. node_modules
  3. package.json
  4. webpack.config.js

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" }}

從依賴就可以看到,這真的是一個最簡單的配置了。其中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就好啦。注意,前者是在開發環境下,是沒有輸出文件的(在內存),只有運行后者才會有輸出文件。

demo的代碼在:https://github.com/yuwanlin/webpackHMR

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
丝袜美腿精品国产二区| 97免费视频在线播放| 国内精品久久久久影院优| 国产精品1区2区在线观看| 在线观看视频亚洲| 日韩**中文字幕毛片| 九九久久久久久久久激情| 久久亚洲精品中文字幕冲田杏梨| 成人免费视频在线观看超级碰| 欧美大肥婆大肥bbbbb| 精品毛片网大全| 人人做人人澡人人爽欧美| 91在线观看免费| 欧美日韩午夜剧场| 欧美在线观看一区二区三区| 亚洲天堂av电影| 国产精品自拍偷拍视频| 热99精品里视频精品| 岛国精品视频在线播放| 91久久精品国产91久久性色| 国产在线拍偷自揄拍精品| 国产做受高潮69| 亚洲精品在线91| 成人午夜黄色影院| 国内精品400部情侣激情| 国产精品久久999| 久久久国产精彩视频美女艺术照福利| 日韩av在线网| 日韩精品视频在线免费观看| 亚洲视频自拍偷拍| 欧美性极品少妇精品网站| 日韩国产高清污视频在线观看| 亚洲区免费影片| 成人免费观看49www在线观看| 亚洲综合最新在线| 欧美精品videos另类日本| 美日韩在线视频| 国语自产精品视频在线看一大j8| 亚洲精品资源在线| 国产精品久久久亚洲| 欧美大片va欧美在线播放| 久久精品久久精品亚洲人| 欧洲美女7788成人免费视频| 成人久久久久爱| 国产精品在线看| 伊人成人开心激情综合网| 欧美亚洲成人网| 不卡在线观看电视剧完整版| 亚洲一级一级97网| 欧美精品久久久久久久久| 亚洲国产一区自拍| 久久精品视频在线| 国产精品va在线播放我和闺蜜| 国产日韩欧美在线观看| 国产主播喷水一区二区| 色噜噜狠狠狠综合曰曰曰| 中文字幕在线亚洲| 欧美成人午夜激情| 国产精品在线看| 国产一区二区三区高清在线观看| 国产精品久久久久一区二区| 亚洲国产中文字幕在线观看| 亚洲精品在线看| 国产成人精品久久| 97人洗澡人人免费公开视频碰碰碰| 欧美一级黑人aaaaaaa做受| wwwwwwww亚洲| 欧美孕妇性xx| 国产精品久久久久久中文字| 国内精品400部情侣激情| 日韩精品一区二区视频| 国产精品99导航| 永久免费精品影视网站| 亚洲欧美日韩国产中文专区| 欧美一级在线亚洲天堂| 国精产品一区一区三区有限在线| 国产精品久久久久久av下载红粉| 亚洲a∨日韩av高清在线观看| 欧美猛男性生活免费| 精品亚洲国产视频| 97精品在线视频| 国产欧美一区二区三区久久人妖| 91夜夜揉人人捏人人添红杏| 国产精品永久免费| 精品无人区太爽高潮在线播放| 国产综合在线视频| 亚洲精品98久久久久久中文字幕| 国产精品午夜视频| 国产亚洲精品综合一区91| 欧美性猛交xxxx偷拍洗澡| 51精品在线观看| 成人午夜两性视频| 精品色蜜蜜精品视频在线观看| 久久亚洲欧美日韩精品专区| 性金发美女69hd大尺寸| 国内精品小视频在线观看| 日韩国产高清视频在线| 成人av电影天堂| 九九视频这里只有精品| 91精品视频一区| 亚洲精品成a人在线观看| 欧美日韩国产成人在线观看| 亚洲欧美日韩第一区| 亚洲一区二区日本| 欧美亚洲国产视频| 亚洲精品影视在线观看| 97国产精品免费视频| 亚洲精品视频在线观看视频| 久久综合久久八八| 人人爽久久涩噜噜噜网站| 亚洲色图25p| 欧美性极品xxxx娇小| 欧美高清在线播放| 激情久久av一区av二区av三区| xx视频.9999.com| 亚洲美女av在线| 日本一区二三区好的精华液| 久久久亚洲福利精品午夜| 亚洲专区国产精品| 亚洲国产精品va在线| 国产精品自产拍在线观| 亚洲v日韩v综合v精品v| 欧美激情亚洲激情| 精品久久久久久亚洲国产300| 国产日韩精品在线| 久久久久久久久久国产精品| 亚洲精品www久久久| 日韩精品在线看| 在线看日韩av| 欧美日韩国产一区二区| 亚洲精品日韩在线| 中文字幕在线观看亚洲| 岛国av一区二区在线在线观看| 亚洲成人性视频| 久久天天躁日日躁| 亚洲美女在线观看| 久久久天堂国产精品女人| 欧美色道久久88综合亚洲精品| 亚洲最新av在线网站| 色www亚洲国产张柏芝| 91精品美女在线| 久久久免费高清电视剧观看| 97香蕉超级碰碰久久免费的优势| 亚洲精品久久7777777| 中文字幕日韩视频| 日本高清不卡在线| 国产黑人绿帽在线第一区| 国产欧美精品xxxx另类| 2019中文在线观看| 日韩精品高清在线| 国产视频久久久久| 欧美日韩国产第一页| 国产91av在线| 亚洲欧美另类人妖| 91中文在线视频| 91热福利电影| 午夜精品三级视频福利| 成人福利在线观看| 尤物99国产成人精品视频| 国产成人高清激情视频在线观看| 国产+成+人+亚洲欧洲| 日韩网站免费观看高清| 国产一区二区三区在线观看网站| 中文字幕亚洲激情|