其实几种实现都是近似的,但具体上不太一样,其中有些不需要用到bundle-loader

第一种:ReactTraining/react-router 介绍的基于 webpackbabel-plugin-syntax-dynamic-import, 和 react-loadable.

主要是利用了react-loadable这个高级组件,他是专门用来异步加载(也可以预加载)组件的。

https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/code-splitting.md

第二种: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啦,其实影响也不大。

最新文章

  1. Android消息传递之EventBus 3.0使用详解
  2. git 版本控制
  3. HTTP基础08--追加协议
  4. CentOS6.5中修改yum源
  5. 泛函编程(6)-数据结构-List基础
  6. java微信开发(wechat4j)——设置响应微信参数
  7. Leetcode | Minimum/Maximum Depth of Binary Tree
  8. css3实现超过两行文字,超出用三个点显示(兼容性不行,仅供学习)
  9. Commons-Collections
  10. HTTP状态码——对照表
  11. hdu3830 (二分+LCA)
  12. cocos2dx --- button点击放大中心
  13. 《JS权威指南学习总结--8.4 作为值的函数》
  14. TreeSet集合如何保证元素唯一
  15. http://codeforces.com/contest/838/problem/A
  16. webpack之proxyTable设置跨域
  17. MyEclipse10 复制之前的项目部署到tomcat时项目名称对不上,还是复制前的项目名称,哪里修改设置
  18. outlook邮件中样式问题
  19. 正则表达式的lastIndex属性
  20. 复刻smartbits的国产网络测试工具minismb-如何测试协议限速

热门文章

  1. php 推荐密码加密的方法
  2. 探索ORACLE之ASM概念(完整版)
  3. 消息中间件之zookper安装部署
  4. 汇编 之 win10 下安装dosbox 和 MASM
  5. 听说你在从事前端开发?那这10个JavaScript的优化问题你不得不知道!
  6. webpack打包多入口配置
  7. Vue中的父子传值问题
  8. OpenRASP管理后台安装记录
  9. UDP广播的客户端和服务器端的代码设计
  10. Nmon 的安装及使用