Webpack 加入 HMR 实现页面自动刷新

阅读时长 5 分钟读完

Webpack 加入 HMR 实现页面自动刷新

Webpack 是一个模块打包器,是前端工程化的常用工具之一。而 HMR(Hot Module Replacement) 是一个 Webpack 插件,能够在不刷新整个页面的情况下,让页面跟随代码的更新而自动刷新。本文将介绍如何在 Webpack 中加入 HMR,实现页面自动刷新的效果。

一、HMR 的实现原理

HMR 的实现原理是通过在客户端和服务器之间建立 websocket 连接,在监控文件变化时通过 webpack-dev-server 向客户端发送更新的代码块,客户端收到后进行局部刷新,从而达到页面自动刷新的效果。

二、安装和配置 webpack-dev-server

首先需要安装 webpack-dev-server 和 webpack-cli:

在 webpack 配置文件中,需要配置 devServer 对象:

-- -------------------- ---- -------
----- ---- - ----------------
----- ----------------- - -------------------------------

-------------- - -
  ------ -----------------
  ------- -
    --------- ------------
    ----- ----------------------- -------
  --
  ---------- -
    ------------ --------
  --
  ------- -
    ------ -
      -
        ----- --------
        -------- -----------------
        ---- -
          ------- ---------------
          -------- -
            -------- ----------------------
            -------- -----------------------------------
          -
        -
      -
    -
  --
  -------- -
    --- -------------------
      --------- ------------------
    --
  -
--

其中,devServer.contentBase 指定 Web 服务器的根目录,本例中为 dist 目录。HtmlWebpackPlugin 用于在 dist 目录自动生成 index.html 文件,其模板是 src/index.html。

现在,执行 npx webpack-dev-server 命令,在浏览器中打开 http://localhost:8080 网址,即可看到自动生成的 index.html 页面。

三、加入 HMR

在配置对象中加入如下代码:

其中,devServer.hot 表示启用 HMR 插件。此时再次执行 npx webpack-dev-server 命令,在浏览器中打开网址,查看控制台输出,可以看到如下信息:

表示 HMR 插件已启用。现在,我们需要修改 src/index.js 文件,此时在浏览器控制台中可以看到如下输出:

且无需手动刷新 web 页面,即可看到页面内容已经更新,达到了自动刷新的效果。

四、使用 webpack-dev-middleware + webpack-hot-middleware

除了通过配置 devServer 实现 HMR 外,还可以通过使用 webpack-dev-middleware + webpack-hot-middleware 包,实现 HMR 的效果。

配置 webpack-dev-middleware:

-- -------------------- ---- -------
----- ------- - -------------------
----- ------- - -------------------
----- -------------------- - ----------------------------------
----- -------------------- - ----------------------------------

----- --- - ----------
----- ------ - -------------------------------
----- -------- - ----------------

-------------------------------------- -
  ----------- ------------------------
----

----------------------------------------

---------------- ---------- -
  ---------------------- -- --------
---

其中,webpackDevMiddleware 指定编译器和公共路径,webpackHotMiddleware 指定编译器并启用 HMR 插件。通过 node server.js 启动服务,即可在浏览器中访问网址查看 HMR 效果。

五、总结

本篇文章介绍了 Webpack 加入 HMR,实现页面自动刷新的方法。在开发中,通过 HMR 能够提高效率,避免手动刷新页面的操作。通过本文的学习,读者可以熟悉 HMR 的原理和配置方法,掌握 HMR 的常用场景。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648bcae948841e9894a15c13

纠错
反馈