基于react16 webpack3 搭建前端spa基础框架 react-router的4种异步加载方式

这两天看了下react的文档,准备搭建一套适用的基本react开发架子。html

因为我一直使用的是vue,不多使用过react进行项目的开发,所以此构建主要参考的是vue的项目经验。前端


项目主要会涉及到的知识点

  • webpack 配置及其优化vue

  • react-router 升级为4.0以后的使用 react-router-dom react-router-configreact

  • react-router 异步4种异步加载配置webpack


项目github源码:github.com/wangweiange…

react和vue的开发模式很像,一样的组件化,模块化,统一状态管理机制,路由 ... 等等,所以我以为做为一位使用的开发者,咱们仅仅须要了解各自的api,各自的大体实现原理就能够开始上手撸代码了。git

技术栈的相互切换没有太大的成本,上手开发都比较简单,由于有太多的一致性。github


一 :webpack的优化配置前面一篇文章中我有详细的介绍

请参考:blog.seosiwei.com/detail/9

webpack在vue和react里面的配置几乎是一致的,惟一的不一样就是loader的配置,这里就不作详细的介绍。web


二:react-router4

react-router4版本 相对于v2 , v3有很是大的区别,能够说是彻底重构的感受。npm

react-router4 中 拆分为redux

  1. react-router 核心功能
  2. react-router-dom 针对于浏览器的路由
  3. react-reouter-native 针对于native端的路由

在此基础上咱们可能还须要:react-router-redux , react-router-config等插件。


在router4之前,咱们是使用getComponent的的方式来实现按需加载的,router4中,getComponent方法已经被移除。

看了一下网上的文章,基本都介绍的不是很全面,所以在此总结一下,并给出实际的源码供你们参考。

在这里主要介绍 v4版本按需加载的配置。

(1)Code Splitting使用 react-loadable , babel-plugin-syntax-dynamic-import

参考地址:github.com/ReactTraini…

www.npmjs.com/package/rea…

具体到项目配置以下:

1.安装依赖

//安装依赖
npm install react-loadable --save-dev
npm install babel-plugin-syntax-dynamic-import --save-dev复制代码

2.webpack 解析import()配置:


3.router路由配置



(2)bundle-loader 按需加载方式,官方文档案例

参考地址:www.npmjs.com/package/bun…

reacttraining.com/react-route…

1.安装依赖

//安装依赖
npm install bundle-loader --save-dev复制代码

2.新增Bundle组件 ./src/components 下新增 Bundle.jsx 组件,内容以下:


3.router路由配置


(3) 改变2的方案 import按需加载

参考连接:www.jianshu.com/p/547aa7b92…

reactjs.org/blog/2017/0…

1.安装依赖

npm install babel-plugin-syntax-dynamic-import --save-dev复制代码

2.webpack 解析import()配置:



3.新建BundleImport 组件 ./src/components 下新增 BundleImport.jsx 组件,内容以下:


4.router 路由配置



(4)Create an Async Componen 建立一个Async组件方式异步加载

参考连接:serverless-stack.com/chapters/co…

reactjs.org/blog/2017/0…

babeljs.io/docs/usage/…


1.因为须要支持 async,await的语法,所以咱们安装一下babel-polyfill

npm install babel-polyfill --save-dev
npm install babel-plugin-syntax-dynamic-import --save-dev复制代码

2.webpack入口配置 babel-polyfill , babel-loader 配置 syntax-dynamic-import plugin



3.新增AsyncComponent组件 ./src/components 下新增AsyncComponent.jsx 组件,内容以下:


4.router路由配置



总结:react-router 按需加载的方式有不少种,你们各自选择合适于本身的便可。全部的按需加载源码皆在 ./src/app.jsx 文件中。


关于react-router-config 的配置补充请看下面一篇文章

react-router4基于react-router-config的路由拆分与按需加载



关注个人博客:zane的我的博客

原文地址:基于react16 webpack3 搭建前端spa基础框架 react-router的4种异步加载方式

相关文章
相关标签/搜索