webpack5零基础入门-19HMR的应用

1.定义

HMR即HotModuleReplacement

开发时,当我们修改了其中一个模块的代码webpack默认会将所有模块重新打包编译,速度很慢所以我们需要做到修改摸个模块代码,只对这个模块的代码重新打包编译,其他模块不变,这样打包的速度就能变快

HotModuleReplacement(HMR/热模块替换):在程序运行中,替换、添加或者删除模块,而无需重新加载整个页面

2.配置

在webpack.dev.js中添加配置

/**开发服务器 */devServer: {host: 'localhost',//启动服务器域名port: "3000",//启动服务器端口号open: true,//是否自动打开浏览器hot: true,//开启HMR功能(只能用于开发环境,生产环境不需要)},

然后执行命令

npx webpack serve --config ./config/webpack.dev.js

进行开发模式的运行

此时css文件已经可以实现HMR了,修改css文件保存,整个页面不会刷新,只会更新修改的模块。

此时控制台会打印出哪个模块进行了HMR

3.实现JS文件的HMR

对于JS文件webpack不会在配置后自动进行HMR,需要手动进行配置

在打包的入口文件中即main.js文件中对需要HMR的模块进行逐个的引入

添加如下代码

//添加JS热更新
if (module.hot) {console.log('支持热更新');//判断是否支持热更新module.hot.accept('./js/sum.js')module.hot.accept('./js/count.js')
}

 然后重新运行

修改count.js模块,在查看控制台,发现count.js已经可以进行HMR了。

 4.完整代码

webpack.dev.js

const path = require('path');//nodejs用来处理路径问题的模块
const ESLintPlugin = require('eslint-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const WebpackDevServer = require('webpack-dev-server');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const loader = require('sass-loader');
function getCssLoader(pre) {return [MiniCssExtractPlugin.loader, 'css-loader',{loader: 'postcss-loader',options: {postcssOptions: {plugins: ['postcss-preset-env']}}}, pre].filter(Boolean)
}
module.exports = {/**入口 */entry: './src/main.js',/**输出 相对路径*/output: {/**文件输出路径 绝对路径*///__dirname 表示当前文件的文件夹目录path: undefined,//所有文件的输出目录/**文件名 */filename: 'static/js/dist.js',//入口文件输出文件名clean: true,//在打包前将path整个目录内容情况},/**加载器 */module: {rules: [//loader的配置{/**test 代表要检测的文件 */test: /\.css$/, //只检测.css文件use: getCssLoader() //对检测到文件使用哪些loader},{test: /\.less$/,//只检测.less文件//loader:'xxx',loader只能使用一个loader,use可以使用多个loaderuse: getCssLoader('less-loader'),//对检测到文件使用哪些loader},{test: /\.s[ac]ss$/,//只检测.sass文件use: getCssLoader('sass-loader'),},{test: /\.styl$/,//只检测.stylus文件use: getCssLoader('stylus-loader')},{test: /\.(png|jpe?g|gif|webp)$/,type: 'asset/resource',parser: {dataUrlCondition: {//小于10kb的图标转base64,减少请求数量maxSize: 10 * 1024 // 10kb}},generator: {//输出图片名称//[hash:10]hash值取前10位filename: 'static/imgs/[hash:10][ext][query]'}},/**图标字体相关配置 */{test: /\.(ttf|woff2?|mp3|mp4|avi)$/,//只对ttf、woff2资源起作用type: 'asset/resource',//加上/resource表示将资源原封不动的打包出来generator: {filename: "static/media/[hash][ext][query]"}},{test: /\.js$/,/**排除哪些文件 */exclude: /(node_modules)/,loader: 'babel-loader',// options: {//     presets: ['@babel/preset-env'],// },},]},/**插件 */plugins: [//plugin配置new ESLintPlugin({/** 检测哪些文件 */context: path.resolve(__dirname, '../src')}),new HtmlWebpackPlugin({/**模板 */template: path.resolve(__dirname, '../src/public/index.html')}),new MiniCssExtractPlugin()],/**开发服务器 */devServer: {host: 'localhost',//启动服务器域名port: "3000",//启动服务器端口号open: true,//是否自动打开浏览器hot: true,//开启HMR功能(只能用于开发环境,生产环境不需要)},/**模式 */mode: 'development',devtool: 'cheap-module-source-map'
}

 main.js

import sum from "./js/sum";
import count from "./js/count";
//要想webpack打包资源,必须引入该资源
import "./css/file.css"
import "./css/box.less"
import "./css/box2.scss"
import "./css/box3.styl"
import "../src/css/iconfont.css"
console.log(count(1, 2));
console.log(sum(1, 2, 3, 4, 5))
//添加JS热更新
if (module.hot) {console.log('支持热更新');//判断是否支持热更新module.hot.accept('./js/sum.js')module.hot.accept('./js/count.js')
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识Spring Boot:构建项目结构与组件解析

目录 前言 第一点:项目的结构 第二点:controller类的创建与使用(构造器) 第二点:service类的创建与使用(逻辑层) 第三点:Mapper类的创建与使用(数据操作) 总结 前言 在进行Sp…

【稳定检索】2024年心理学与现代化教育、媒体国际会议(PMEM 2024)

2024年心理学与现代化教育、媒体国际会议 2024 International Conference on Psychology and Modern Education and Media 【1】会议简介 2024年心理学与现代化教育、媒体国际会议即将召开,这是一场汇聚全球心理学、教育及媒体领域精英的学术盛宴。 本次会议将深入探…

目前最强的AI绘画工具 DALL-E、Stable Diffusion 和 Midjourney工具对比

大家好,我是AIGC的实践者SKY,今天和大家来聊聊DALL-E、Stable Diffusion和Midjourney。 随着人工智能技术的飞速发展,艺术生成工具如DALL-E、Stable Diffusion和Midjourney等,已经成为创意产业的新宠。这些工具利用深度学习算法&…

618适合入手哪些数码好物?实用数码好物清单分享,错过拍烂大腿!

在一年一度的618购物狂欢节里,许多数码爱好者们都在这次盛大的购物盛宴中觅得心仪的数码好物,数码产品不仅改变了我们的生活方式,更让我们享受到了前所未有的便捷和乐趣,那么在这个618,哪些数码好物值得我们入手呢&…

Java实战入门:深入解析Java中的`String.split`方法

文章目录 一、方法定义参数说明返回值 二、使用场景三、实现原理无限制分割限制分割 四、示例代码示例一:基本分割示例二:使用正则表达式分割示例三:限制分割次数示例四:保留空字符串 五、注意事项六、总结 在Java编程中&#xff…

oracle中的INTERVAL函数学习总结

Oracle 从9i数据库开始引入了一种新特性,可以用来存储时间间隔,出现了INTERVAL 函数。这个函数的表达式比较多,初学比较费劲不好掌握,经过以几个小时的查阅资料和实验,总结如下: interval year t…

python绘制北京汽车流量热力图:从原理到实践

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、热力图绘制原理 三、热力图绘制实践 1. 数据准备 2. 地图组件选择 3. 数据…

建WordPress主题官网模板

蓝色的中文WordPress企业模板 https://www.zhanyes.com/qiye/6305.html 暗红色WordPress律师事务所网站模板 https://www.zhanyes.com/qiye/23.html 红色大banner图WordPress外贸网站模板 https://www.zhanyes.com/waimao/27.html

通过 CXCR4 靶向纳米线修补细胞表面以抑制癌症转移

引用信息 文 章:Cell surface patching via CXCR4-targeted nanothreads for cancer metastasis inhibition. 期 刊:Nature Communications(影响因子:16.6) 发表时间:2024/3/29 作 者&#xff1…

HttpSecurity 是如何组装过滤器链的

有小伙伴们问到这个问题,简单写篇文章和大伙聊一下。 一 SecurityFilterChain 首先大伙都知道,Spring Security 里边的一堆功能都是通过 Filter 来实现的,无论是认证、RememberMe Login、会话管理、CSRF 处理等等,各种功能都是通…

virtual cache基本概念

Virtual cache的引入 TLB只是加速了从虚拟地址到物理地址的转换,可以很快地得到所需要的数据(或指令)在物理内存中的位置,也就是得到了物理地址但是,如果直接从物理内存中取数据(或置指令),显然也是很慢的,因此可以使用在以前章节提到的Cache来缓存物理地址到数据的转换过程。实…

集成电路的引脚分布规律及识别

集成电路的引脚分布规律根据不同的封装方式而确定,引脚的序号和集成电路图中的编号是一一对应的,识别集成电路的引脚号对分析集成电路的内部框图和工作原理,以及排除集成电路的故障都具有重要的意义。 1.单列集成电路引脚的分布规律及识别 …

区块链技术:金融行业的信任基石

一、引言 在数字化转型的浪潮中,区块链技术以其独特的优势,正逐渐成为金融行业的信任基石。本文将深入探讨区块链技术在金融行业的应用,通过具体案例的细化和完善,分析其特点和影响。 二、区块链技术的核心特点 1. 去中心化:区块链技术通过分布式账本,实现去中心化的数…

栈和队列题目练习

本节小编选了两道题来加深对栈和队列的认识理解! 有效的括号 方法1:直接用栈的结构(动态数组) 本题可以用栈这个结构来解答,将(,{,[ 左括号压入栈中,然后取出栈顶元素与右括号),},]匹配。不匹配的话&…

【Qt】【模型视图架构】 在项目视图中启用拖放

文章目录 1. 在便捷类中启用拖放2. 在模型/视图类中启用拖放 模型/视图框架支持Qt的拖放应用。 列表、表格和树中的项目可以在视图中被拖拽,数据作为MIME编码的数据被导入和导出。标准视图可以自动支持内部的拖放。 默认视图的拖放功能并没有被启用,如果…

opencv进阶 ——(八)图像处理之RMBG模型AI抠图

BRIA.AI团队于HuggingFace开源了一个基于ISNet背景移除模型RMBG-1.4,它可以有效对前景与背景进行分离。RMBG-1.4在精心构建的数据集上训练而来,该数据包含常规图像、电商、游戏以及广告内容,该方案达到了商业级性能,但仅限于非商业…

【PHP项目实战训练】——laravel框架的实战项目中可以做模板的增删查改功能(1)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

【管理咨询宝藏120】顶级咨询公司领导管控优化设计方案

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏120】顶级咨询公司领导管控优化设计方案 【格式】PDF版本 【关键词】人力资源、组织管控、领导力 【核心观点】 - 管的过细” “高层的管理要往…

【排序】冒泡排序

在我们的生活中,到处都离不开排序的作用,考试分数要排序,商场购物要排序,可以说排序对我们来说处处存在,那么从本章开始,我将要依次分享一些排序方法,从易到难,包括冒泡,…

随身wifi和手机流量卡,你知道该怎么选吗?

网络已经成为我们这个时代的代名词! 那么,在上网的时代,我们有很多问题都要考虑,比如如何选择上网方式,是选择一张流量卡,还是一个随身WIFI? 听小编一句劝,先不要着急买&#xff0c…