React-Router4 按需加载的4种实现
其实几种实现都是近似的,但具体上不太一样,其中有些不需要用到bundle-loader
第一种:ReactTraining/react-router 介绍的基于 webpack, babel-plugin-syntax-dynamic-import
, 和 react-loadable
.
主要是利用了react-loadable这个高级组件,他是专门用来异步加载(也可以预加载)组件的。
第二种:SF网友介绍的Bundle组件配合webpack组件bundle-loader
bundle-loader效用其实和require.ensure()一样,把组件分片成单独的chunk,在Bundle组件中引入
https://segmentfault.com/a/1190000009539836
但是我尝试的时候发现总是报错说不要在import中引入webpack的loader。。。
然后我继续查,发现第三种实现
第三种:简书AlienZHOU介绍的同样基于create-react-app的方式,在Bundle组件中props入一个()=>import('path')函数
http://www.jianshu.com/p/547aa7b92d8c
第四种,create-react-app文档给的react-router按需加载实现:用一个类Bundle组件的异步函数
https://serverless-stack.com/chapters/code-splitting-in-create-react-app.html
这种方式我试了下,确实能分片,但是讨论里有人指出性能上不如Bundle组件,那个人好像还是Create-react-app的主要贡献者
四种方式我都试过,期间。。这个过程略痛苦。。。不过结论是:第三种是目前我认为最好的,基于create-react-app,且实现最简单。
但是较大的项目,一般我们都会eject出来自己配置webpack啦,其实影响也不大。
最新文章
- Android消息传递之EventBus 3.0使用详解
- git 版本控制
- HTTP基础08--追加协议
- CentOS6.5中修改yum源
- 泛函编程(6)-数据结构-List基础
- java微信开发(wechat4j)——设置响应微信参数
- Leetcode | Minimum/Maximum Depth of Binary Tree
- css3实现超过两行文字,超出用三个点显示(兼容性不行,仅供学习)
- Commons-Collections
- HTTP状态码——对照表
- hdu3830 (二分+LCA)
- cocos2dx --- button点击放大中心
- 《JS权威指南学习总结--8.4 作为值的函数》
- TreeSet集合如何保证元素唯一
- http://codeforces.com/contest/838/problem/A
- webpack之proxyTable设置跨域
- MyEclipse10 复制之前的项目部署到tomcat时项目名称对不上,还是复制前的项目名称,哪里修改设置
- outlook邮件中样式问题
- 正则表达式的lastIndex属性
- 复刻smartbits的国产网络测试工具minismb-如何测试协议限速