Webpack 资深专家详解 Webpack-Dev-Server

Webpack 是前端开发中极其重要的工具,而 Webpack-Dev-Server 又是 Webpack 中不可或缺的一部分。它是一个基于 Node.js 的开发服务器,用于在开发过程中实时编译打包代码,并提供网络服务。

为什么需要 Webpack-Dev-Server?

在 Webpack 开发的时候,每次修改代码都需要重新执行打包命令,然后刷新页面才能看到效果。这个过程非常麻烦,也极易出错。Webpack-Dev-Server 提供了一个更加便捷的开发方式,它将自动监视源码的变化,实时重新编译打包,并把文件输出到内存中。

Webpack-Dev-Server 的基本使用

Webpack-Dev-Server 的使用非常简单,在终端中输入以下命令就可以启动服务:

然而,你会发现这个命令仅仅启动了一个 HTTP 服务器,这个服务器的根目录是当前工作目录。如果你的项目中存在 HTML 文件,可以在浏览器中访问 http://localhost:8080/index.html 这个地址来访问。

如果你想要自定义 Webpack-Dev-Server 的一些配置,可以在你的 Webpack 配置文件中添加以下代码:

在 devServer 中,你可以对 Webpack-Dev-Server 进行一些配置,下面我们来介绍几个常用的配置项。

contentBase

  • 类型:string | boolean | number | object | array
  • 默认值:false

此选项可在通知 WebpackDevServer 提供静态资源的目录。

contentBase 根目录是 webpack.config.js 所在目录,但 contentBase 优先级更高。

port

  • 类型:number
  • 默认值:8080

此选项确定 server 在哪个端口监听,默认监听 8080 端口。

proxy

  • 类型:object

来自 http-proxy-middleware的代理配置选项。

hot

  • 类型:boolean
  • 默认值:false

启动模块热替换功能。

Webpack-Dev-Server 热更新

热更新可以让我们开发时非常想快地看到修改结果,而不必重新刷新页面。

热更新实现的原理很简单,就是在页面上加入一个 Websocket,服务端代码(Webpack-Dev-Server)侦听代码变更事件,当代码变更时,服务端向浏览器发送消息,浏览器接收到消息后,调用 Webpack 暴露的 HMR API。

为了实现热更新,我们需要在 Webpack 配置文件中进行如下配置:

除此之外,你还需要对你的代码进行一些适当的修改,下面是一个简单的示例。

当修改 print.js 代码之后,你将可以在控制台看到如下信息:

Webpack-Dev-Server 的其他特性

除了上面提到的基本使用和热更新以外,Webpack-Dev-Server 还有一些其他特性,下面我们简单介绍一下。

自动打开浏览器

如果你在运行 Webpack-Dev-Server 的时候,希望自动启动浏览器打开页面,那么可以添加配置项 open

控制台提示

在终端中运行 Webpack-Dev-Server 的时候,我们可以看到控制打印了一些信息,这些信息会提示我们目前运行的状态,可以帮助我们更好地进行开发。

请求代理

如果在开发中我们需要跨域请求数据,可以使用 proxy 参数代理请求。

总结

Webpack-Dev-Server 是 Webpack 开发中不可或缺的一部分,使用它可以提高开发效率,减少开发难度。通过本文的介绍,相信各位读者对 Webpack-Dev-Server 的基本使用和常用配置已有了初步的了解,希望能对大家有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65364b6b7d4982a6ebe4e04c


纠错
反馈