Open Quickeryi opened 7 years ago
在前端自动化过程中,热加载功能是必不可少的,它能极大的提升开发效率,帮助开发人员快速实现所见即所得~ 👍 下面记录以下集中方案,每种方案都有各自的特点,选择适合符合自己业务需求的,才是最好的!
webpack自带监听模式watch,这是种模式非常简单易用,只需要在命令行执行webpack时,加上参数即可,如下:
watch
$ webpack --watch # 如果编译时,希望输出内容带有进度和颜色,可以像下面这样使用 $ webpack --watch --colors --progress
webpack
webpack-dev-server 提供了一个易于部署的开发服务器,具有快速的实时重载(live reloading)功能,总体来说,它完美的解决了第一种方案的两个缺点,使用方式如下:
webpack-dev-server
# 下载安装 webpack-dev-server $ npm install webpack-dev-server; # 使用方式一:webpack-dev-server CLI(命令行参数调用) $ webpack-dev-server --content-base <base path for the content> --open --inline --hot --compress # 使用方式二:webpack-dev-server 配置(webpack.config.js) const devServer = require('webpack-dev-server'); module.exports = { //.... devServer: { contentBase: <告诉服务器从哪里提供内容>, proxy: <对于一些前后端分离开发项目,此处可以代理自己的api服务器> //........ } };
这是一种进阶方案,其实webapck-dev-server就是基于这种方案的,只不过它已经封装好了,开箱即用,如果你已经有一个 Node.js 服务器或者你想要完全控制服务器,这将很实用,而且自己编写会获得极大的灵活性。这里就不过多解释了。
webapck-dev-server
大部分人在看官方文档时,肯定会被webapck-dev-server webpack-dev-middleware webpack-hot-middleware这几个概念弄晕,下面简明扼要的说一下它们分别是啥,并彼此有啥关系吧!
webpack-dev-middleware
webpack-hot-middleware
Express
http
middleware
webpack热加载方案
方案一:启动监听模式
webpack自带监听模式
watch
,这是种模式非常简单易用,只需要在命令行执行webpack时,加上参数即可,如下:webpack
编译之后,你还需要手动刷新浏览器方案二:webpack-dev-server
webpack-dev-server
提供了一个易于部署的开发服务器,具有快速的实时重载(live reloading)功能,总体来说,它完美的解决了第一种方案的两个缺点,使用方式如下:方案三:Express + webpack-dev-middleware
这是一种进阶方案,其实
webapck-dev-server
就是基于这种方案的,只不过它已经封装好了,开箱即用,如果你已经有一个 Node.js 服务器或者你想要完全控制服务器,这将很实用,而且自己编写会获得极大的灵活性。这里就不过多解释了。写在最后
大部分人在看官方文档时,肯定会被
webapck-dev-server
webpack-dev-middleware
webpack-hot-middleware
这几个概念弄晕,下面简明扼要的说一下它们分别是啥,并彼此有啥关系吧!webpack-dev-server
是一个基于Express
的http
服务器,它的作用主要是使用webpack
进行实时的编译,再用webpack-dev-middleware
将编译后文件会输出到内存中。Express
的人应该会很熟悉middleware
这个概念;这个中间件会导致webpack
在内存中编译文件。当一个编译正在执行的时候,它会将对于文件的请求延迟,直到编译完成,它会在内存中形成一个文件映射系统,每当应用程序请求一个文件,它匹配到了就把内存中缓存的对应结果以文件的格式返回给你,反之则进入到下一个中间件。webpack-dev-middleware
使用,它可以实现浏览器的实时刷新更新(hot reload);HMR和热加载的区别是:热加载是刷新整个页面