从零开始开辟一个react脚手架(四)

这一篇能够重要讲的是热更新,写的很细,碰到许多有意义的处所,一一和人人讲解下。

前沿:webpack-dev-server支撑热更新,简朴的说就是你修正代码,浏览器能够自动革新页面

先看一段代码截图

《从零开始开辟一个react脚手架(四)》

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内里

    《从零开始开辟一个react脚手架(四)》

    由于我们走的是API,而webpackDevServer内里已供应了以要领addDevServerEntrypoints完成。只须要通报两个设置参数即可。他的效果如图,我打印出了webpackConfig

    《从零开始开辟一个react脚手架(四)》

    说白了就是手动把热更新的两个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

    《从零开始开辟一个react脚手架(四)》

    然后在我们的项目目次中cli-view 中包裹一层Root.jsx

    《从零开始开辟一个react脚手架(四)》

    至此就能够圆满的完成开辟环境的自动的更新了,变动代码,能够完成革新当前变动的module,而不是革新全部页面。
    实在另有一个小小的疑问,在测试过程当中,我即使不加上 react-hot-loader/babel这个plugin,也能够完成懒更新,只须要在项目目次中设置即可。看了下这个plugin的源码,没看出所以然来,我猜想这个plugin,是不是说懒启动的时刻,保证能走一遍babel编译? 有待大佬考证!!!。

    趁便简朴说下proxy,一般而言挪用背景接口都会报跨域,但设置了proxy,类似于在node层做了一次效劳转发。

    《从零开始开辟一个react脚手架(四)》

    我把底本cli-view目次下的webpack.config.js改成了app.config.js。我把一切的设置都放在了这个文件内里。我当地启用了一个端口8888的效劳,而我的cli-view的port是3000,当我要求API后,一切的/api前缀的要求都转到了8888下。

    《从零开始开辟一个react脚手架(四)》

    《从零开始开辟一个react脚手架(四)》

    到了这里关于webpack-dev-server的内容就差不多了。很细,很有意义

    从零开始开辟一个react脚手架(五)

        原文作者:白衣卿相
        原文地址: https://segmentfault.com/a/1190000018858462
        本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
    点赞