世界杯2022是哪个国家_国足世界杯出线 - dtfyjq.com

  • 首页
  • 北京世界杯
  • 世界杯新秀
  • 世界杯16强名单

最新发表

  • 太平廣記 : 詼諧六 : 熝牛頭
  • 公司起名参考大全:创意、寓意与行业适配指南
  • Pops是什么意思?它是缩写吗?
  • GTX650显卡深度评测:性能怎么样?值得入手吗?
  • 腾讯天王卡59元套餐包含什么?
  • 链接缩短 - 短网址
  • 03喜茶为什么不上市?
  • 马云30年前旧照曝光……他说,世界上最好的大学是杭州师范大学,没有之一
  • 快手解绑手机号操作全解析,让你轻松搞定!
  • 人像修图软件免费哪个好 ps人像精修照片步骤有哪些

友情链接

Copyright © 2022 世界杯2022是哪个国家_国足世界杯出线 - dtfyjq.com All Rights Reserved.

webpack配置完热更新之后还是会刷新整个页面

世界杯16强名单 · 2025-11-30 11:57:14

可以在webpack文档中找到有关热更新的详细信息,意思就是,开启热更新之后,整个页面你改了哪里,就只更新哪里,其他没变的,或者保存在缓存里面的内容,都不会改变,感谢很神奇!很方便!直接写个demo测试一下。

index.html

document

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已经自动帮我们引入了webpack.HotModuleReplacementPlugin,所以这里只设置hot: true就可以热更新了。

接下来我们来测试一下,执行npm start,初始的count是0,a是1,我们点击oDIv1让他自增到2,然后修改a的值为11。然后保存代码,查看页面。如果这个时候oDIv1的值是2,oDiv2的值是11,那么就说明热更新配置成功了。但是很遗憾,oDIv1的值被重置为了0,热更新没生效。

经过再次查看文档,发现,热更新其实是需要自己监听module.hot.accept的。也就是说webpack的热更新并不是开箱即用的,而是只是给我们提供了这样一个钩子。

例如改一下bootstrap.js的代码

import "./index.js";

if (module.hot) {

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

}

我监听了index.js的文件变化。然后再次更改,虽然值还是会被重置。但是页面没有刷新,页面是否刷新,大家可以看一下当前tab页每次更新完是否会转圈,如果没有转圈,就说明没有刷新页面,而至于各种状态如何保持之前状态,需要大家自己在module.hot.accept中自行编写对应逻辑。这也说明了无论是vue,还是react都有自己自带的热更新的loader或者plugins。

最后总结一下,webpack的热更新并不是开箱即用的,而是需要再webpack提供的module.hot.accept函数中,自行实现对应的热更新之后的逻辑。


#第6章 从零开始组建增长团队
移动一元一g套餐介绍 – 移动1元1G套餐值不值?实测报告+避坑指南