下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 19 | webpack中的热更新及原理分析
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

玩转webpack

共84讲 · 84课时,约900分钟
5422
免费
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 为什么需要构建工具
04 | 前端构建演变之路
05 | 为什么选择webpack
06 | 初识webpack
免费
07 | 环境搭建:安装webpack
08 | webpack初体验:一个最简...
09 | 通过npm script运行webpa...
免费
10 | webpack核心概念之entry
免费
11 | webpack核心概念之output
12 | webpack核心概念之loaders
13 | webpack核心概念之plugins
14 | webpack核心概念之mode
15 | 解析ECMASCript 6和React...
16 | 解析CSS、Less和Sass
17 | 解析图片和字体
18 | webpack中的文件监听
19 | webpack中的热更新及原理...
20 | 文件指纹策略:chunkhash...
21 | HTML 、CSS和JavaScript...
22 | 自动清理构建目录产物
23 | PostCSS插件autoprefixer...
24 | 移动端CSS px自动转换成r...
25 | 静态资源内联
26 | 多页面应用打包通用方案
27 | 使用sourcemap
28 | 提取页面公共资源
29 | Tree Shaking的使用和原...
30 | Scope Hoisting使用和原...
31 | 代码分割和动态import
32 | 在webpack中使用ESLint
33 | webpack打包组件和基础库
34 | webpack实现SSR打包(上)
35 | webpack实现SSR打包(下)
36 | 优化构建时命令行的显示日...
37 | 构建异常和中断处理
38 | 构建配置包设计
39 | 功能模块设计和目录结构
40 | 使用ESLint规范构建脚本
41 | 冒烟测试介绍和实际运用
42 | 单元测试和测试覆盖率
43 | 持续集成和Travis CI
44 | 发布构建包到npm社区
45 | Git Commit规范和changel...
46 | 语义化版本(Semantic Ve...
47 | 初级分析:使用webpack内...
48 | 速度分析:使用speed-mea...
49 | 体积分析:使用webpack-b...
50 | 使用高版本的webpack和Nod...
51 | 多进程/多实例构建
52 | 多进程并行压缩代码
53 | 进一步分包:预编译资源模...
54 | 充分利用缓存提升二次构建...
55 | 缩小构建目标
56 | 使用Tree Shaking擦除无...
57 | 使用webpack进行图片压缩
58 | 使用动态Polyfill服务
59 | webpack启动过程分析
60 | webpack-cli源码阅读
61 | Tapable插件架构与Hooks设...
62 | Tapable是如何和webpack进...
63 | webpack流程篇:准备阶段
64 | webpack流程篇:模块构建...
65 | webpack流程篇:文件生成
66 | 动手编写一个简易的webpac...
67 | 动手编写一个简易的webpac...
68 | loader的链式调用与执行顺...
69 | 使用loader-runner高效进...
70 | 更复杂的loader的开发场
71 | 实战开发一个自动合成雪碧...
72 | 插件基本结构介绍
73 | 更复杂的插件开发场景
74 | 实战开发一个压缩构建资源...
75 | 商城技术栈选型和整体架构
76 | 商城界面UI设计与模块拆分
77 | React全家桶环境搭建
78 | 数据库实体和表结构设计
79 | 登录注册模块开发
80 | 商品模块开发
81 | 订单模块开发
82 | 谈谈web商城的性能优化策...
83 | 功能开发总结
84 | 结束语
本节摘要

精选留言(41)

  • 2019-06-13
    老师HotModuleReplacementPlugin是做什么用的,没有手动引入也可以完成热更新。但是手动引入之后就会报错,ERROR in chunk main [entry]

    ./source2019/css/main_34800f5bbbfca82eb93c.css

    Cannot use [chunkhash] or [contenthash] for chunk in './source2019/js/[name]_[contenthash].js' (use [hash] instead)

    用的是MiniCssExtractPlugin将css单独保存
    展开

    作者回复: 这里面的热更新有最核心的是 HMR Server 和 HMR runtime。

    HMR Server 是服务端,用来将变化的 js 模块通过 websocket 的消息通知给浏览器端。

    HMR Runtime是浏览器端,用于接受 HMR Server 传递的模块数据,浏览器端可以看到 .hot-update.json 的文件过来。

    继续回到这个问题:老师HotModuleReplacementPlugin是做什么用的?

    webpack 构建出来的 bundle.js 本身是不具备热更新的能力的,HotModuleReplacementPlugin 的作用就是将 HMR runtime 注入到 bundle.js,使得bundle.js可以和HMR server建立websocket的通信连接

    1
    13
  • 2019-06-01
    webpack.HotModuleReplacementPlugin 没有必要加,官网文档说配置了 hot: true 会自动引入这个 plugin。

    作者回复: 嗯嗯,这里面也是出于演示 HMR Runtime

    9
  • 2019-05-31
    老师,webpack-dev-server 是webpack-dev-middleware的封装版,webpack-dev-middleware不详细聊一下灵活的场景嘛?
    8
  • 2019-06-07
    同求上面同学的建议,webpack-dev-server和webpack-dev-middleware的详细区别,特别是使用场景,希望老师能再抽出来讲一讲
    6
  • 2019-06-05
    > webpack-dev-server --open

    'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。

    作者回复: npm i webpack-dev-server -D,安装下这个包依赖

    6
  • 2019-06-04
    HMR什么情况下会失败?我这边自己写或者用GitHub上的示例代码,每次浏览器都会整体刷新。
    1
    4
  • 2019-06-18
    老师您好!我回看了这一节,写了demo,发现修改search.js的内容浏览器还是整体会刷新,但是修改search.less的内容HMR生效、不会刷新浏览器。这是什么原因?
    1
    3
  • 2019-07-17
    个人觉得,老师在讲到原理部分的时候,是不是可以语速稍微放慢一点儿(给我的感觉像是在读ppt)?
    感觉原理部分还是比较晦涩的对于新手来说,希望在学完本教程以后不只是学会webpack如何配置。
    2
  • 2019-06-08
    Mavericker同学实力误导,我还特地去webpack官网看了下。“hot: true, // hot module replacement. Depends on HotModuleReplacementPlugin”这是原文。哪里说了自动引入plugin啊?
    1
    2
  • 2019-12-04
    我想问一下,我这边是用express + webpack-dev-middleware + webpack-hot-middleware 实现热跟新的,现在css和js可以实现,html改变前端也可以接到hmr通知,但是内容是空的,怎么实现html的热跟新呢?
    1
  • 2019-07-30
    老师,我刚刚npm run dev之前把dist删掉了,发现npm run dev不能自动生成dist(猜想是因为没有执行webpack);那日常工作如果用热更新,是不是必须先npm run build打包出dist,再执行npm run dev?
    1
  • 2019-07-18
    老师 HRM Runtime 在 PDF 中好像打错了
    1
  • 2019-06-07

    'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    并没有启动成功

    作者回复: 你需要在项目里面安装下这个依赖哈,

    npm i webpack-dev-server -D

    1
  • 2019-11-09
    最后的your js code指的是浏览器运行的代码吗?
  • 2019-11-09
    不理解8和B为什么是双向箭头
  • 2019-11-01
    老师,我在主入口文件 输入
    if(module.hot) {
      module.hot.accept()
    }
    为什么控制台,打印:
    [WDS] App updated. Recompiling...
    reloadApp.js:19 [WDS] App hot update...
    log.js:21 [HMR] Checking for updates on the server...
    log.js:21 [HMR] Updated modules:
    log.js:21 [HMR] - ./src/hello.js
    log.js:21 [HMR] - ./src/index.js
    log.js:21 [HMR] App is up to date.
    然后也没有热更新啊
    展开
  • 2019-10-10
    老师您好我发现 plugins 里面并没有加 webpack.HotModuleReplacementPlugin 这个插件
    修改文件也能自动更新这是什么情况呢
    lugins: [
        // new webpack.HotModuleReplacementPlugin()
      ],
      devServer: {
        contentBase: './dist',
        // hot: true
      }
    我都注释了 我修改文件后浏览器也会自动刷新
    展开
  • 2019-09-20
    这里开始看的时候没怎么在意,自己不用脚手架搭建自己的react项目时发现只能监听更新,而不能做到实时无刷新热替换,官网上说react需要使用react-hot-loader,并且css代码还需要style-loader,没试成功,不知道老师怎么做的
  • 2019-09-16
    本节课用到的webpack-dev-server的contentBase是自己指定的,也就是打包后的文件目录。我用create-react-app脚手架创建的项目,开启服务后,并没有被打包输出,直接可以热更新,请问这个怎么配置呢?
  • 2019-09-05
    我正常运行npm run dev完成命令,为什么浏览器打开之后是个空白的页面?还有我改变内容之后不自动更新?谢谢。