- webpack-dev-server启动一个服务
- 浏览器和服务端是通过websocket进行长连接
- webpack内部实现的watch就会监听文件修改,
- 依赖中间件webpack-dev-middleware和webpack之间进行交互,监听本地文件的修改,然后进行构建带有hash的js文件, 且产生一个update.json
- 客户端去请求update.json(network可见)以及应该更新的hashid的js,进行热更新,如果失败了就刷新页面
更深层次的理解:
- HMR runtime等机制?
- 怎么通过hash检查文件变更?
- 怎么通过jsonp的方式,怎么把更新的模块代码传递给浏览器?