当前位置: 首页 > news >正文

句容网站建设学企业管理培训班

句容网站建设,学企业管理培训班,经营性 网站备案,湖北省建设银行网站6前言 之前更新过一篇Webpack文章:Webpack入门只看这一篇就够了(图文代码),没想到颇受好评,很快就阅读量就破万了hhh,应读者私信的要求,决定继续更新Webpack进阶系列的文章! 进入今天的主题 —— HMR 热模块替换(HotM…

前言


之前更新过一篇Webpack文章:Webpack入门只看这一篇就够了(图文+代码),没想到颇受好评,很快就阅读量就破万了hhh,应读者私信的要求,决定继续更新Webpack进阶系列的文章!

进入今天的主题 —— HMR

热模块替换(HotModuleReplacement)


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

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

使用场景


在这里插入图片描述
如上图所示,一个注册页面包含用户名、密码、邮箱三个必填输入框,以及一个提交按钮,当你在调试邮箱模块改动了代码时,没做任何处理情况下是会刷新整个页面,频繁的改动代码会浪费你大量时间去重新填写内容。预期是保留用户名、密码的输入内容,而只替换邮箱这一模块。这一诉求就需要借助webpack-dev-server热模块更新功能。

相对于live reload整体刷新页面的方案,HMR的优点在于可以保存应用的状态,提高开发效率。

代码实操


热替换只能用于开发环境,生产环境是不需要的,且开发环境中hot配置默认是开启的。

// webpack.dev.jsdevServer: {host: "localhost", // 启动服务器域名port: "3000", // 启动服务器端口号open: true, // 是否自动打开浏览器hot: true, // 开启HMR功能},

hot:true的情况下运行开发环境,如下更改css的时候可以看到页面并没有刷新,而只是对更改的css进行了解析,因为我们在开发模式下使用的style-loader实现了这一功能,这就是热模块替换

在这里插入图片描述

虽然css实现了热模块替换,但JS还没有实现,更改JS文件进行保存还是会刷新页面重新打包编译,JS实现热模块替换还需要进行下面的操作:

// src/main.js    
// 判断是否支持HMR功能    
if (module.hot) {    module.hot.accept("./js/count.js");    
}

加上这个count.js改变之后就会进行热模块替换,如果其他文件也需要进行热模块替换也是需要加上module.hot.accept("");进行设置。

module.hot.accept("./js/count.js",function(){});还可以接收一个函数,这个函数就是当触发热替换的时候就会自动调用这个函数

当然,如果文件很多的话会很麻烦,在实际开发中会使用其他的loader来解决这个问题,比如vue-loader

原理


在这里插入图片描述
如上图所示,右侧Server端使用webpack-dev-server去启动本地服务,内部实现主要使用了webpackexpresswebsocket

  • 使用express启动本地服务,当浏览器访问资源时对此做响应。

  • 服务端和客户端使用websocket实现长连接

  • webpack监听源文件的变化,即当开发者保存文件时触发webpack的重新编译。

  • 每次编译都会生成hash值、已改动模块的json文件、已改动模块代码的js文件,编译完成后通过socket向客户端推送当前编译的hash

  • 客户端的websocket监听到有文件改动推送过来的hash戳,会和上一次对比一致则走缓存,不一致则通过ajaxjsonp向服务端获取最新资源

  • 使用内存文件系统去替换有修改的内容实现局部刷新

oneOf


在运行打包代码时每个文件都会经过所有loader处理,虽然因为test正则原因实际没有处理上,但是都要走,如果loader和文件很多,那就会大大拖慢打包文件的速度,那么就可以使用oneOf,也就是只能匹配上一个 loader, 只要匹配到了剩下的就不匹配了。

使用:
我们只需要在生产环境和开发环境的配置中将所有的规则像下面这样包起来就可以了:

rules:[{oneOf:[将原本卸载rules:[]的规则放进来!]}
]

完成上面的操作之后分别在开发模式和生产模式进行一次代码的打包,测试一下打包是否可以成功,成功则说明配置是正确的,虽然能优化的速度有限,但蚊子再小也是肉也是不错的!

http://www.khdw.cn/news/21935.html

相关文章:

  • 做网站的资料修改搜索引擎调词平台多少钱
  • 关于网页设计的网站世界足球世界排名
  • 专业网站制作公司名称国际最新消息
  • javaweb做网站的流程百度网页版怎么切换
  • 青羊区电商型网站建设设计5g网络优化工程师
  • 凡客网站做SEO能被收录吗汕头百度seo公司
  • 一流的盘锦网站建设网站seo属于什么专业
  • wordpress+HTML5游戏宁波网络推广优化公司
  • 仿360电影网站源码永久免费国外域名注册
  • 全面的手机网站建设郑州网络营销公司有哪些
  • 网络系统工程设计是干什么的什么是sem和seo
  • 软件技术服务包括哪些内容优化建站
  • 服务网站建设推广网站建立具体步骤是
  • 宣武富阳网站建设互联网怎么打广告推广
  • 做自媒体都有什么网站seo优化软件
  • 哪个网站做服装批发比较好培训机构网站模板
  • 未来网站建设想法2023年8月份新冠
  • 网站后台难做吗在线建站模板
  • 网站内地图位置怎么做杭州网站seo推广软件
  • 简单大气网站欣赏万网域名交易
  • 广州微信网站设计制作重庆网站seo搜索引擎优化
  • 网站项目策划书内容模板百度文库官网登录入口
  • 班级网站设计报告 dreamwaverseo网站推广助理
  • 做网站编程在程序北京网站外包
  • 哈尔滨微网站建设营销软文写作
  • 莱芜招聘的网站优秀网站seo报价
  • 网站开发 模块营销战略
  • 品牌企业网站建设公司价格营销广告文案
  • 那个网站专门做二手衣服西安seo霸屏
  • 网站收录提交入口网址h5下一页