Webpack 的 HMR 功能,是通过 WebSocket 实现的推送 JSON Patch,同时需要第三方库支持。

具体解决方案:

热加载(HMR)是 Webpack Dev Server 最强大的功能之一,页面源码的变更可以无需刷新地实时推送到页面上。以 vue 为例,一个最简的 HMR 配置策略如下所示:

首先安装 webpack-dev-server 与前端 JS 库的 HMR 依赖(如 Vue 的 vue-hot-reload-api),而后编辑 package.json中的命令:

{
"scripts": {
"dev-server": "webpack-dev-server --hot --inline"
}
}

添加这一行代码后,运行 npm run dev-server 即可实现带 HMR 功能的 dev-server 引入。这也就相当于在完全没有修改业务代码的前提下,完成了 HMR 的引入(实际上这也确实是一个 opt-in 的特性)。而若需对 Webpack Dev Server 进行配置,可以编辑 webpack.config.js 中 module. devServer 的相关字段。

虽然 HMR 非常实用,但与 Webpack Dev Server 的集成也一定程度上影响了其泛用性。在一些场景下,我们仍然需要在开发时使用 Webpack 写入到磁盘的 bundle 文件,这时候就显然无法使用和 Dev Server 配套的 HMR 功能了。这带来了一个问题:如何在 Webpack 配置中实现既支持 HMR,又支持类似 --watch 的传统开发模式呢?

通过 NPM Scripts,可以很容易地区分带 HMR 和不带 HMR 的构建命令。例如如下的配置:

{
"scripts": {
"dev": "webpack --watch",
"dev-server": "webpack-dev-server --hot --inline"
}
}

就区分了两条构建开发包的命令,区别在于通过 webpack 的命令会将打包文件动态写入磁盘,而使用 webpack-dev-server 的命令可以在使用 webpack 配置文件的基础上,无缝引入 HMR 特性。这样,在开发环境不适合使用 HMR 的场合也可以通过 npm run dev 命令实现回退。

控制台报错 [WDS] Disconnected!的更多相关文章

  1. 登录DSCCC控制台报错提示:安装错误代码: 3

    登录DSCCC控制台报错内容:读取安装配置时出错 检查目录服务控制中心状态时出现意外错误. 显示详细资料 隐藏详细资料 安装错误代码: 3 堆栈: com.sun.directory.common.s ...

  2. Putty使用公钥认证时,报错:Disconnected: No supported authentication methods available(server sent:public key) 问题的解决

    Putty使用公钥认证时,按照常规方法设置,一直报错:Disconnected: No supported authentication methods available (server sent: ...

  3. Chrome 控制台报错Unchecked runtime.lastError: The message port closed before a response was received

    Chrome浏览器控制台报错提示 Unchecked runtime.lastError: The message port closed before a response was received ...

  4. node+react 打包成功,控制台报错

    控制台报错: 'ReactCurrentOwner' of undefined 解决办法:RN版本的问题. As I mentioned, make sure you've installed the ...

  5. 控制台报错: SCRIPT1006: Expected ')'

    今天做网站的时候,jsp页面取一个值死活取不出来. <script> if(${not empty requestScope.article.articleId}){ alert(${re ...

  6. 特殊字符导致jquery-mobile 挂起(firefox控制台报错 malformed URI sequence)

    同事遇到一个问题,刷新页面导致页面挂起,浏览器控制台报错 malformed URI sequence, 经排查发现是引用jquery-mobile js引起的问题, 有一些中文参数在url中,当页面 ...

  7. Chrome控制台报错个人总结(不定时更新)

    最近开始使用Chrome控制台检测代码错误,对于经常碰到的报错做一个汇总,免得每次遇到都要重新想一遍策略,错误原因,重复劳动,浪费时间. 由于不是每个错误都能碰到,以下仅列出个人写代码时经常碰到的报错 ...

  8. 填坑——audio不能正常播放,控制台报错 Uncaught (in promise) DOMException

    原文:https://blog.csdn.net/Mariosss/article/details/87861167 用chrome调试页面时,发现audio控件有时不能正常播放音频,控制台报错 Un ...

  9. vue开发中控制台报错问题

    1.sockjs.js?9be2:1606 GET http://localhost:8566/sockjs-node/info?t=1569478261510 net::ERR_CONNECTION ...

随机推荐

  1. 1012 The Best Rank (25 分)

    To evaluate the performance of our first year CS majored students, we consider their grades of three ...

  2. linux安装常用软件和查询基本信息

                                                                          linux安装常用软件和查询基本信息 1. 安装常用软件 [ ...

  3. MES Auto Logout

    如果您在车间使用MES,可能存在这种情况有人在仍然登录的情况下偶尔离开终端.如果一段时间不使用终端,我们是否可以让用户自动注销. 1 首先,我们有一条using语句: using System.Run ...

  4. ERC20代币(ETH)空投工具-创建代币

    代币空投工具地址:http://tool.ethhelp.cn 适用币种: ETH和ERC20代币 使用建议: ERC代币空投,直投,ETH批量转小号 优势介绍: 1.可节省30%手续费 2.转几千地 ...

  5. MyBatis(九):动态SQL

    本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...

  6. 曹工说Redis源码(4)-- 通过redis server源码来理解 listen 函数中的 backlog 参数

    文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...

  7. VUE_shop(第十天)项目的打包优化

    项目的打包优化 1.添加页面的加载效果 1.首先安装运行依赖nprocess,在main.js文件中的axios拦截器拦截请求的时候调用Npeocees.start. 在拦截响应的时候调用nproce ...

  8. Docker+Jmeter+InfluxDB+Grafana搭建性能测试监控平台

    搭建需求? jmeter自身的聚合测试报告可视化效果极差,为更加形象的.动态的展示测试过程,需要一个具有时序性的可视区来展示给我们的测试者, 这时候就需要用到后端监控,下面我们来开始搭建符合这种测试需 ...

  9. 抓包——HTTP分析

      1.什么是HTTP请求(底层使用scoket TCP技术) HTTP是超文本传输协议.底层使用的scoket tcp长连接.基于请求和响应  同步请求. 2.重定向底层: 重定向原理:为什么会产生 ...

  10. HAproxy 基础配置

    基础配置详解 HAProxy 的配置文件haproxy.cfg由两大部分组成,分别是global和proxies部分 global:全局配置段 进程及安全配置相关的参数性能调整相关参数Debug参数 ...