webpack 3 零基礎入門教程 #12 - 如何使用模塊熱替換 HMR 來處理 CSS

模塊熱替換 是什么意思?

以前我們使用的 webpack --watchwebpack-dev-server 的功能是監聽文件改變,就自動刷新瀏覽器,而這個 模塊熱替換 不用刷新瀏覽器,它是只讓修改到的模塊,才會在瀏覽器上發生相應的變化,就是生效,而不是重新刷新瀏覽器。

為什么要這么做呢?有時候模塊越多,改得頻繁,刷新起來還是很慢的,效率低呀。

所以有了 模塊熱替換 的功能,我們來試一下,讓我們一改 CSS 然后瀏覽器不用刷新就會讓頁面生效改變。

1. 啟用 HMR

webpack.config.js

  devServer: {port: 9000,open: true,}
復制代碼

改成下面這樣:

  devServer: {port: 9000,open: true,hot: true}
復制代碼

webpack.config.js

...
const webpack = require('webpack');...module.exports = {entry: {"app.bundle": './src/app.js',"contact": './src/contact.js'},output: {path: path.resolve(__dirname, 'dist'),filename: '[name].[chunkhash].js'},devServer: {port: 9000,open: true,hot: true},plugins: [new CleanWebpackPlugin(pathsToClean),...// 這兩行是新增的new webpack.NamedModulesPlugin(),new webpack.HotModuleReplacementPlugin()],...
};復制代碼

可惜,報錯了個錯:

文件名還不能用 chunkhash 了,它說要用 hash 來代替 chunkhash

我們來改一下:

filename: '[name].[chunkhash].js'
復制代碼

變成

filename: '[name].[hash].js'
復制代碼

2. 處理 extract-text-webpack-plugin

現在你試一下改變 src/app.scss 的內容,你會發現頁面不動了,你無論怎么改,頁面都不會改變,也不會刷新。

之前我們是用 extract-text-webpack-plugin 這個插件來處理 CSS 的,在用 HMR 的時候要先把它關閉一下。

用一個參數 disable: true 就可以關閉掉。

webpack.config.js

new ExtractTextPlugin("style.css")
復制代碼

變成

new ExtractTextPlugin({filename: 'style.css',disable: true
}),
復制代碼

然后把處理 scss 文件的 loader 部分變成類似下面這樣:

...test: /\.scss$/,use: ExtractTextPlugin.extract({fallback: 'style-loader',//resolve-url-loader may be chained before sass-loader if necessaryuse: ['css-loader', 'sass-loader']})
...
復制代碼

變成

...test: /\.scss$/,use: ['style-loader', 'css-loader', 'sass-loader']
...
復制代碼

再試試,能夠生效。

為什么要關閉呢這個插件呢?

其實想想也能知道,在開發環境下,用不用 extract-text-webpack-plugin 這個插件,意義不大,你把 css 變不變成一個文件,關系不大,開發環境只要能調效,效果能夠看到就可以,但是生產環境需要這個插件,我們總不能開發環境不使用這個插件,也導致生產環境也不使用吧?

那如何解決這個問題呢?也就是說讓生產環境使用這個插件,而開發環境不使用,我們下節來討論這個問題。

先這么多吧。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539892.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

struts2訪問jsp頁面404

問題描述 在搭建struts2環境的時候&#xff0c;拷貝了web.xml&#xff0c;拷貝了struts.xml&#xff0c;拷貝了jar包。運行&#xff0c;正常&#xff0c;訪問jsp頁面&#xff0c;報404錯誤。 web.xml <?xml version"1.0" encoding"UTF-8"?> <w…

centos7定制linux鏡像,自定制Centos7.3系統鏡像(ISO)

本文主要介紹如何根據官方的Centos鏡像文件&#xff0c;在保留原有默認安裝的RPM包的基礎下&#xff0c;添加自己所需要的RPM包的&#xff0c;最終生成一個自定制版的ISO&#xff0c;節省了寶貴的時間并確保了安裝的定制性。對于其他沒有介紹的修改&#xff0c;后續在實踐中會進…

調用打開另外一個APK

2019獨角獸企業重金招聘Python工程師標準>>> Intent mIntent new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName comp new ComponentName("com.mm.android.direct.gdmssphoneLite", "com.mm.android.direct.gdmsspho…

Jquery Mobile dialog的生命周期

JQuery Mobile對htm5的移動開發絕對是個好用的東西&#xff0c;今天簡單談談JQuery Mobile中的dialog的使用。 1.對話框的彈出。 2.對話框的生命周期。 3.對話框內事件的注冊。 1&#xff09;第一個問題&#xff1a;對話框的彈出。 如果要彈出一個對話框&#xff0c;可以在頁面…

基本linux命令vi,基本linux和vi命令.pdf

基本linux和vi命令DETIBIHORP ___________________YLTCIR 附錄 BTSSIR 基本的 Linux 和ETUP vi 命令 yM lO nC oS___________________I eH sT uM NOR OF IS TL AAI RR OET PA RMT OIK

集成Java內容倉庫和Spring

JCR模塊 Spring Modules的一部分&#xff0c;JCR模塊的主要目標是&#xff1a;以一種類似Spring主分發包中ORM包的方式&#xff0c;簡化使用JSR-170 API進行開發。特點如下&#xff1a; JcrTemplate&#xff0c;允許執行JcrCallback和異常處理&#xff08;將需檢查的JCR異常轉換…

jQuery Mobile彈出對話框后不刷新原頁面,保持原頁面內容不變

使用jQuery Mobile開發移動應用程序時&#xff0c;在一個頁面上彈出對話框&#xff0c;關閉對話框后&#xff0c;發現原來的頁面被刷新了。如果原頁面上有一些已經選擇或者填寫的數據&#xff0c;則這些數據就會丟失。這時候&#xff0c;就需要對對話框的返回按鈕做一些處理&am…

mpi4py linux例子,python-3.x – mpi4py中的共享內存

我使用MPI(mpi4py)腳本(在單個節點上),它與一個非常大的對象一起使用.為了讓所有進程都可以訪問該對象,我通過comm.bcast()分發它.這會將對象復制到所有進程并占用大量內存,尤其是在復制過程中.因此,我想分享像指針而不是對象本身.我發現memoryview中的一些功能對于增強進程內對…

c語言源程序最多可能由組成,一個C語言源程序由若干函數組成,其中至少應含有一個()。...

個C語言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“萬物莫不有對”體現了中國傳統哲學的矛盾觀。用戶在進行產品的三維設計時&#xff0c;干函可以采用以下( )的設計方法。數組少意識是人腦對客觀…

oracle的背景

oracle簡介 1977年 美國人 Larry 成立軟件開發實驗室 。 1980年 用c/c開發了世界第一個商用關系型數據庫&#xff08;RDBMS&#xff09;。 1983年 公司更名為Oracle Corporation&#xff08;甲骨文公司&#xff09;。 2009年4月21日&#xff0c;Oracle收購Sun公司。 30多…

Citrix Netscaler版本管理和選擇

Citrix Netscaler版本管理和選擇 來源 http://blog.51cto.com/caojin/1898164 隨著Citrix Netscaler的快速發展&#xff0c;有很多人在維護設備時經常搞不懂Netscaler軟件版本是如何查看和選擇&#xff0c;當前軟件是否需要升級&#xff0c;當前軟件是否穩定等。基于以上問題&a…

樹的基本操作代碼 c語言,二叉樹的基本操作(C語言、源代碼)

二叉樹的基本操作(源代碼)#include "stdio.h"#include "malloc.h"#define MAX 100typedef struct node{int date;struct node *lchild,*rchild;}bitnode,*bitree;bitree createbitree(bitree bt){int m;printf("m");scanf("%d",&m…

oracle實例與數據庫

一、名稱 Oracle數據庫服務器。單叫數據庫或服務器都不全面。 二、組成 oracle數據庫服務器由二部份組成&#xff1a;實例和數據庫 實例&#xff1a; 可理解為對象&#xff0c;看不見。數據庫&#xff1a; 理解為類&#xff0c;看得見的&#xff0c;E:\app\Administrator\…

1.Dao代碼如何編寫?

Dao代碼如何編寫&#xff1f; 1、操作xml數據。數據保存在xml文件里。2、使用jdbc技術。2.1、原始的jdbc操作&#xff0c;connection&#xff0c;statement&#xff0c;resultset。2.2、自定義一個持久層的框架&#xff0c;封裝通用的dao操作方法。2.3、DbUtils組件&#xff0c…

WEB前端面試題匯總整理01

1.JS找字符串中出現最多的字符 例如&#xff1a;求字符串nininihaoa中出現次數最多字符 var str "nininihaoa"; var o {}; for (var i 0, length str.length; i < length; i) {var char str.charAt(i);if (o[char]) {o[char]; //次數加1} else {o[char] 1;…

c語言 文件游程統計,游程 碼表 如何形成

游程 碼表 如何形成求一個程序 將下表用huffman 樹存儲表示用傳統的霍夫曼建立的樹 好像不能形成此碼表。我感覺應該有一個特等的算法。我也試了好幾種方法&#xff0c;感覺都不行&#xff0c;希望大家給點建議。(碼表 要利于編碼和解碼)(部分碼表)白游程 碼子 黑游程 碼子(長…

用2468這四個數字c語言,C語言作業及參考答案.doc

C語言及實驗作業參考做法分支程序設計上機作業&#xff1a;標題4.3三角形判斷描述輸入三條邊的長&#xff0c;輸出這三條邊是否構成等邊三角形、等腰三角形、直角三角形、普通三角形&#xff0c;還是不能構成三角形輸入數據整數a,b,c的值輸出數據等邊三角形、等腰三角形、直角三…

C# WinForm開發系列 - GDI+【轉】

http://blog.csdn.net/blue_sky6/article/details/53811435?locationNum6&fps1 C# WinForm開發系列 - GDI Posted on 2009-07-19 15:23 peterzb 閱讀(48850) 評論(17) 編輯 收藏 UI&#xff08;User Interface&#xff09;編程在整個項目開發過程中是個頗為重要的環節&…

2.ORM思想

一、ORM思想介紹 orm是一種思想&#xff0c;是dao層代碼的一種編寫思想。其中&#xff1a;o代表Object&#xff0c;java對象&#xff1b;r代表Relation&#xff0c;關系型數據庫&#xff1b;m代表Map&#xff0c;java對象和關系型數據庫表的映射關系。該思想主張&#xff1a;1、…

android 字體顏色選擇,Android中顏色選擇器和改變字體顏色的實例教程

易采站長站為您分析Android中顏色選擇器和改變字體顏色的實例教程,其中改變字體顏色用到了ColorPicker顏色選擇器,需要的朋友可以參考下1.構建一張七彩圖:我們經常看到這種樣子的顏色選擇器吧..然后其實右邊的亮度選擇是:這樣我們的代碼就可以進行啦...// 創建七彩圖片private …