Webpack实战(二):webpack-dev-server的介绍与用法

摘要:
我们都会发现,仅将Webpack及其命令行工具用于开发和调试是不高效的。我们需要执行npmrunbuild命令来更新js文件。使用以下命令安装webpack-dev-server安装和配置:将webpack-def-server的配置信息保存到package.json的devDependencies节点。

为什么要用webpack-dev-server

在开发中,我们都可以发现仅仅使用Webpack以及它的命令行工具来进行开发调试的效率并不高,每次编写好代码之后,我们需要执行npm run build命令更新js文件,然后再刷新页面,才能看到更新效果。webpack-dev-server正好解决了这个问题,是一款便捷的本地开发工具。

webpack-dev-server 安装及配置

用以下命令进行安装:

npm install webpack-dev-server --save-dev

--save-dev:将webpack-dev-server保存配置信息到pacjage.json的devDependencies(开发环境依赖)节点中。这样做是因为webpack-dev-server仅仅在本地开发时才会用到,在生产环境中并不需要它 。项目上线的时候,要进行依赖安装,就可以通过npm install--production过滤掉devDependencies中的冗余模块,从而加快安装和发布的速度。

为了便捷地启动webpack-dev-server,我们在package.json中添加一个dev指令:

"scripts": {
    "build": "webpack",
    "dev": "webpack-dev-server --open"  //open是自动执行后打开页面
  }

最后,对webpack.config.js添加一个devServer对象,它是专门用来放webpack-dev-server配置的,webpack-dev-server可以看作一个服务者,它的主要工作就是接收浏览器的请求,然后将资源返回。当服务启动时,会先让Webpack进行模块打包并将资源准备好(在示例中就是bundle.js)。当webpack-dev-server接收到浏览器的资源请求时,它会首先进行URL地址校验。如果该地址是资源服务地址(上面配置的publicPath),就会从Webpack的打包结果中寻找该资源并返回给浏览器。反之,如果请求地址不属于资源服务地址,则直接读取硬盘中的源文件并将其返回

"devServer": {
    "publicPath": './dist',
    "port": 3000
  }

这里有一点需要注意。直接用Webpack开发和使用webpack-dev-server有一个很大的区别,前者每次都会生成budnle.js,而webpack-dev-server只是将打包结果放在内存中,并不会写入实际的bundle.js,在每次webpack-dev-server接收到请求时都只是将内存中的打包结果返回给浏览器。

webpack-dev-server还有一项很便捷的特性就是live-reloading(自动刷新)。当我们修改了内容之后,切换到浏览器你会发现,浏览器内容也变化了。

webpack-dev-server特点:

  • 令Webpack进行模块打包,并处理打包结果的资源请求
  • 作为普通的Web Server,处理静态资源文件请求
  • 解决了来回npm run build,再更新代码的问题,比较便捷
  • 可以设置port端口和open(自动打开页面),其他更多配置可以参考官网api:https://webpack.js.org/configuration/dev-server/
  • 自动刷新:浏览器自动更改后的内容

免责声明:文章转载自《Webpack实战(二):webpack-dev-server的介绍与用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇术语“go”不被识别为cmdlet,函数,脚本文件或可操作程序的名称固态硬盘 每秒1.5G下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTML5Audio/Video全解(疑难杂症)

1、mp4格式视频无法在chrome中播放   Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件)。为 什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki/Mp4),普通人对MP4的理解是后缀 为.mp4的文件。但MP4本身不是一种简单的视频格式,它是一个包装了...

Android浏览器软键盘中的回车(确认)会触发表单提交的问题解决办法

     最近在公司里做项目的时候遇到一个问题,开发出来的网页需要在Android手机中的浏览器中打开,当在表单中的文本框内输入内容时,如果这时点软键盘中的回车会导致表单被提交,而不是正常的点击按钮提交。     经上网查询了相关资料与自己的测试,下面发出解决的代码:     在表单的onSubmit事件中加入以下代码:     Javascript...

react 简单搭建

1.新建一个文件夹 2.执行npm init 3.整理新建工程目录结构,包含必要文件index.html 和 index.js 4.安装react 、react-dom 5. 安装webpack(穿件webpack.config.js文件) npm install --save-dev webpack 6.安装Babel编译器(创建babel.confi...

Webpack 解析ES6和React

webpack解析ES6 webpack原生可以识别js,但不能识别ES6语法因此需要借助babel-loader以及.babelrc配置文件 babel-preset是一系列babel plugin的集合 安装以下npm包 npm i @babel/core@7.4.4 @babel/preset-env@7.4.4 babel-loader@8.0.5...

Chrome开发者之测试应用

一、Chrome开发者工具简介 1.1、开发者工具(DevTools)调用 二、Chrome DevTools详细介绍 1.1、模块介绍 2.1、元素(Elements)详解 2.1.1、元素编辑 2.1.2、辅助元素定位 2.1.3、ChroPath插件 3.1、控制台(Console)详解 4.1、源代码(Sources)详解 5.1、网络(Netwo...

JavaScript中XMLHttpRequest实现跨域访问

JavaScript的跨域访问方法有很多,不下十种。本文总结的是XMLHttpRequest的跨域访问。 在JavaScript中,我们可以用XMLHttpRequest访问服务端应用。但是浏览器对这类访问有一个限制,就是JavaScript所在页面与所访问的服务端应用必须属于同一个域内,也就是同一个IP和端口号内。这就是JavaScript同源策略(Ac...