这一篇能够重要讲的是热更新,写的很细,碰到许多有意义的处所,一一和人人讲解下。
前沿:webpack-dev-server支撑热更新,简朴的说就是你修正代码,浏览器能够自动革新页面。
先看一段代码截图
webpack-dev-server的设置。
- historyApiFallback设置为true,有点类似于app.get(“*”, index),就是一个兜底的路由,保证一切未阻拦的404页面都转向index。
- contentBase 设置的就是dist目次,即webpack打包的dist目次,所以开启webpack-dev-server之前,必需打包一下,不然找不到index.html文件。
inline设置为true,更新文件后革新页面
- hot设置为true,只更新修改模块,由于我们用的是API体式格局许可webpack-dev-server,所以设置项目中必需设置port和host,不然会报错。
重点:基础设置完成后,在增添一段代码到webpack的entry内里
由于我们走的是API,而webpackDevServer内里已供应了以要领addDevServerEntrypoints完成。只须要通报两个设置参数即可。他的效果如图,我打印出了webpackConfig
说白了就是手动把热更新的两个JS文件插进去到了entry中,一并打包。假如我们手动写的webpack.config.js,就应该邃晓这点。所以这个API照样很轻易的。
实在走到这里就能够完成页面自动刷了。but…
依据设置履历,还须要设置一个
plugins.push(new webpack.HotModuleReplacementPlugin());
but,依据我现实的测试效果,不必手动到场这个plugin也能够完成热更新。缘由就跟我上面说的一样,API自动加上了这个设置。我们公司的脚手架没用这个API效果,致使本身分外增添了许多设置。
BUT,走到这里,我们会发明只完成了第一步页面自动革新。假如我们开辟的是react运用就远远不够了。由于一旦项目大起来,革新页面将会是一件异常异常耗时的事变,尤其是当涉及到效劳器端衬着的时刻。
要完成类似于懒更新的功用,须要引入react-hot-loader。引入最新版本,依据文档,只须要设置两个处所即可。
脚手架的babel设置,增添一个plugin react-hot-loader/babel
然后在我们的项目目次中cli-view 中包裹一层Root.jsx
至此就能够圆满的完成开辟环境的自动的更新了,变动代码,能够完成革新当前变动的module,而不是革新全部页面。
实在另有一个小小的疑问,在测试过程当中,我即使不加上 react-hot-loader/babel这个plugin,也能够完成懒更新,只须要在项目目次中设置即可。看了下这个plugin的源码,没看出所以然来,我猜想这个plugin,是不是说懒启动的时刻,保证能走一遍babel编译? 有待大佬考证!!!。
趁便简朴说下proxy,一般而言挪用背景接口都会报跨域,但设置了proxy,类似于在node层做了一次效劳转发。
我把底本cli-view目次下的webpack.config.js改成了app.config.js。我把一切的设置都放在了这个文件内里。我当地启用了一个端口8888的效劳,而我的cli-view的port是3000,当我要求API后,一切的/api前缀的要求都转到了8888下。
到了这里关于webpack-dev-server的内容就差不多了。很细,很有意义