React 路由懒加载的几种实现方案

Posted xanthedsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React 路由懒加载的几种实现方案相关的知识,希望对你有一定的参考价值。

这篇文字简单的介绍了React在路由懒加载方面的几种实现方案。

传统的两种方式

import()

符合ECMAScript提议的import()语法,该提案与普通 import 语句或 require 函数的类似,但返回一个 Promise 对象。这意味着模块时异步加载的

webpack v2+ 使用

使用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function component() {
 return import( /* webpackChunkName: "lodash" */ ‘lodash‘).then(_ => {
  var element = document.createElement(‘div‘);
  element.innerhtml = _.join([‘Hello‘, ‘webpack‘], ‘ ‘);
  return element;
 }).catch(error => ‘An error occurred while loading the component‘);
}
 
// 或者使用async
 
async function getComponent() {
 var element = document.createElement(‘div‘);
 const _ = await import(/* webpackChunkName: "lodash" */ ‘lodash‘);
 element.innerHTML = _.join([‘Hello‘, ‘webpack‘], ‘ ‘);
 return element;
}

require.ensure

webpack指定的使用方式

webpack v1 v2 指定使用方式

使用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
require.ensure([], function(require){
  var list = require(‘./list‘);
  list.show();
‘list‘);
 
<!-- Router -->
const Foo = require.ensure([], () => {
  require("Foo");
}, err => {
  console.error("We failed to load chunk: " + err);
}, "chunk-name");
 
//react-router2 or 3
<Route path="/foo" getComponent={Foo} />

lazyload-loader

相对于前两种,此种方式写法更为简洁。

使用方式

1
2
3
4
5
6
7
8
9
10
11
// webpack 配置文件中 使用lazyload-loader(必须将lazuyload-loader 放置在use的最右侧)
 
module: {
  rules: [
   {
    test: /.(js|jsx)$/,,
    use: [
     ‘babel-loader‘,
     ‘lazyload-loader‘
    ]
   },

业务代码中

1
2
3
4
5
6
// 使用lazy! 前缀 代表需要懒加载的Router
 
import Shop from ‘lazy!./src/view/Shop‘;
 
// Router 正常使用
<Route path="/shop" component={Shop} />

原理 : https://github.com/rongchanghai/lazyload-loader

 

     
技术分享图片 NodeJS+Express+mongoDB+Bootstrap的全栈式工程化开发前后端分离博客系统实战
技术分享图片 Node.js+Koa+ES6+Mongodb+Express实战移动网站及微信二网合一前后端项目
技术分享图片 Node+Express入门+进阶+实战(HTML5+AJAX+Node.js+Express的组合开发Web聊天应用)
技术分享图片 实例讲解基于 React+Redux 的前端开发流程
技术分享图片 React Native零基础入门到项目实战
技术分享图片 HTML5+Vue.js+Koa+zepto框架综合实战移动webAPP整站项目完整成型过程
技术分享图片 移动端开发框架Zepto.js真实案例带你入门+实战移动端商城Web APP
技术分享图片 带你诱人的Ruby,手把手一起做Web app之 ruby on rails web开发学习实录
技术分享图片 爱创课堂张容铭js高级课程backbone企业级实战教程基础+实战图片网项目视频
技术分享图片 爱创课堂张容铭js高级课程Vue.js企业级实战教程基础+实战团购项目视频课程
技术分享图片 爱创课堂张容铭js高级课程Angular企业级实战教程(基础+实战后台管理系统)课程
技术分享图片 小码哥jQuery实战带你搞定旋转木马特效(赵延明老师)
技术分享图片 web前后端全漏洞原理+攻击手段+测试方法+预防措施精讲视频教程
技术分享图片 mock.js-无需等待,让前端独立于后端进行开发--NodeJS搭建服务端调试接口实战京东...  ...2
技术分享图片 web前端高级全栈工程师高薪特训英班开完整版(价值381元)
技术分享图片 潭州全栈web前端:从原生javescript到jQuery交互实战视频课程
技术分享图片 T3 - 构建大型 Web 应用的 JavaScript 框架视频教程
技术分享图片 高手之路!网页设计师应该知道的960网格系统的CSS架构
技术分享图片 一套精美通用系统后台管理UI模板系统框架结构讲解演示地址、详细代码 技术分享图片
技术分享图片 打造全栈工程师之前后端分离的网上商城实战及系统架构解析

以上是关于React 路由懒加载的几种实现方案的主要内容,如果未能解决你的问题,请参考以下文章

React中路由懒加载与Suspense

前端性能优化方案-路由懒加载实现

React开发(204):react代码分割之路由懒加载

react路由懒加载,路由配置化,webpack自动导入saga文件--后台定义配置式路由

React 路由动态加载

React自定义组件之懒加载-LazyLoad。