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

webpack配置完熱更新會(huì)刷新整個(gè)頁(yè)面

 更新時(shí)間:2023年11月27日 09:45:45   作者:程序員超超  
本文主要介紹了webpack配置完熱更新會(huì)刷新整個(gè)頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

可以在webpack文檔中找到有關(guān)熱更新的詳細(xì)信息,意思就是,開(kāi)啟熱更新之后,整個(gè)頁(yè)面你改了哪里,就只更新哪里,其他沒(méi)變的,或者保存在緩存里面的內(nèi)容,都不會(huì)改變,感謝很神奇!很方便!直接寫個(gè)demo測(cè)試一下。

index.html

<!DOCTYPE html>
<html lang="zn">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>document</title>
  </head>
  <body>
     <div id="app"></div>
  </body>
</html>

bootstrap.js

import "./index.js";

index.js

let oContainer = document.getElementById("app");

let oDiv1 = document.createElement("div");
let oDiv2 = document.createElement("div");

let count = 0;
let a = "1111";
oDiv1.innerHTML = count;

oDiv1.onclick = () => {
  count++;
  oDiv1.innerHTML = count;
};
oDiv2.innerHTML = a;

oContainer.innerHTML = ''
oContainer.appendChild(oDiv1);
oContainer.appendChild(oDiv2);

webpack.config.js

const HtmlWebpackPlugin = require("html-webpack-plugin");


module.exports = {
  entry: "./bootstrap.js",
  mode: "development",
  devServer: {
    static: "./dist",
    hot: true,
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "./index.html",
    }),
  ],
};

package.json

{
  "name": "webpackdevservertest",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "start": "webpack-dev-server"
  },
  "dependencies": {
    "html-webpack-plugin": "^5.5.3",
    "webpack": "^5.89.0",
    "webpack-cli": "^5.1.4",
    "webpack-dev-server": "^4.15.1"
  }
}

注意這里的devServer配置了hot: true,webpack5已經(jīng)自動(dòng)幫我們引入了webpack.HotModuleReplacementPlugin,所以這里只設(shè)置hot: true就可以熱更新了。

接下來(lái)我們來(lái)測(cè)試一下,執(zhí)行npm start,初始的count是0,a是1,我們點(diǎn)擊oDIv1讓他自增到2,然后修改a的值為11。然后保存代碼,查看頁(yè)面。如果這個(gè)時(shí)候oDIv1的值是2,oDiv2的值是11,那么就說(shuō)明熱更新配置成功了。但是很遺憾,oDIv1的值被重置為了0,熱更新沒(méi)生效。

經(jīng)過(guò)再次查看文檔,發(fā)現(xiàn),熱更新其實(shí)是需要自己監(jiān)聽(tīng)module.hot.accept的。也就是說(shuō)webpack的熱更新并不是開(kāi)箱即用的,而是只是給我們提供了這樣一個(gè)鉤子。

例如改一下bootstrap.js的代碼

import "./index.js";

if (module.hot) {
  module.hot.accept("./index.js", () => {});
}

我監(jiān)聽(tīng)了index.js的文件變化。然后再次更改,雖然值還是會(huì)被重置。但是頁(yè)面沒(méi)有刷新,頁(yè)面是否刷新,大家可以看一下當(dāng)前tab頁(yè)每次更新完是否會(huì)轉(zhuǎn)圈,如果沒(méi)有轉(zhuǎn)圈,就說(shuō)明沒(méi)有刷新頁(yè)面,而至于各種狀態(tài)如何保持之前狀態(tài),需要大家自己在module.hot.accept中自行編寫對(duì)應(yīng)邏輯。這也說(shuō)明了無(wú)論是vue,還是react都有自己自帶的熱更新的loader或者plugins。

最后總結(jié)一下,webpack的熱更新并不是開(kāi)箱即用的,而是需要再webpack提供的module.hot.accept函數(shù)中,自行實(shí)現(xiàn)對(duì)應(yīng)的熱更新之后的邏輯。

到此這篇關(guān)于webpack配置完熱更新會(huì)刷新整個(gè)頁(yè)面的文章就介紹到這了,更多相關(guān)webpack 熱更新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解JavaScript中的尾調(diào)用(Tail Call)

    深入理解JavaScript中的尾調(diào)用(Tail Call)

    尾調(diào)用(Tail Call)是函數(shù)式編程的一個(gè)重要概念,下面這篇文章主要給大家深入的介紹了關(guān)于JavaScript中尾調(diào)用的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2017-02-02
  • JS實(shí)現(xiàn)完全語(yǔ)義化的網(wǎng)頁(yè)選項(xiàng)卡效果代碼

    JS實(shí)現(xiàn)完全語(yǔ)義化的網(wǎng)頁(yè)選項(xiàng)卡效果代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)完全語(yǔ)義化的網(wǎng)頁(yè)選項(xiàng)卡效果代碼,可實(shí)現(xiàn)基于鼠標(biāo)滑過(guò)及點(diǎn)擊的選項(xiàng)卡切換效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-09-09
  • javascript解析ajax返回的xml和json格式數(shù)據(jù)實(shí)例詳解

    javascript解析ajax返回的xml和json格式數(shù)據(jù)實(shí)例詳解

    這篇文章主要介紹了javascript解析ajax返回的xml和json格式數(shù)據(jù),結(jié)合實(shí)例形式詳細(xì)分析了JS ajax調(diào)用及返回值中xml與json格式數(shù)據(jù)的處理技巧,需要的朋友可以參考下
    2017-01-01
  • QQ郵箱的一個(gè)文本編輯器代碼

    QQ郵箱的一個(gè)文本編輯器代碼

    QQ郵箱的一個(gè)文本編輯器代碼...
    2007-03-03
  • JavaScript實(shí)現(xiàn)原型封裝輪播圖

    JavaScript實(shí)現(xiàn)原型封裝輪播圖

    這篇文章主要為大家詳細(xì)介紹了JavaScript原型封裝輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Js中使用正則表達(dá)式驗(yàn)證輸入是否有特殊字符

    Js中使用正則表達(dá)式驗(yàn)證輸入是否有特殊字符

    這篇文章主要介紹了Js中使用正則表達(dá)式驗(yàn)證輸入是否有特殊字符的簡(jiǎn)單代碼,并通過(guò)一小段代碼給大家介紹了js正則表達(dá)式驗(yàn)證同一字符串不同,需要的朋友可以參考下
    2018-09-09
  • js日歷相關(guān)函數(shù)使用詳解

    js日歷相關(guān)函數(shù)使用詳解

    這篇文章主要為大家詳細(xì)介紹了js日歷相關(guān)函數(shù)的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • JS防抖節(jié)流函數(shù)的實(shí)現(xiàn)與使用場(chǎng)景

    JS防抖節(jié)流函數(shù)的實(shí)現(xiàn)與使用場(chǎng)景

    在行走江湖的過(guò)程中,會(huì)出現(xiàn)很多性能優(yōu)化的問(wèn)題來(lái)讓你手足無(wú)措,那么這篇文章主要給大家介紹了關(guān)于JS防抖節(jié)流函數(shù)的實(shí)現(xiàn)與使用場(chǎng)景,針對(duì)這兩個(gè)問(wèn)題來(lái)為你答疑解惑,需要的朋友可以參考下
    2021-07-07
  • es5 類與es6中class的區(qū)別小結(jié)

    es5 類與es6中class的區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于es5 類與es6中class區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • js面向?qū)ο蠓庋b級(jí)聯(lián)下拉菜單列表的實(shí)現(xiàn)步驟

    js面向?qū)ο蠓庋b級(jí)聯(lián)下拉菜單列表的實(shí)現(xiàn)步驟

    這篇文章主要介紹了js面向?qū)ο蠓庋b級(jí)聯(lián)下拉菜單列表的實(shí)現(xiàn)步驟,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下
    2021-02-02

最新評(píng)論