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


Posted in Javascript onOctober 23, 2018

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

传统的两种方式

import()

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

webpack v2+ 使用

使用方式

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 指定使用方式

使用方式

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

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

使用方式

// webpack 配置文件中 使用lazyload-loader(必须将lazuyload-loader 放置在use的最右侧)

module: {
  rules: [
   {
    test: /\.(js|jsx)$/,,
    use: [
     'babel-loader',
     'lazyload-loader'
    ]
   },

业务代码中

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery text,radio,checkbox,select操作实现代码
Jul 09 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
Apr 25 Javascript
简短几句 通俗解释javascript的闭包
Jan 17 Javascript
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
Nov 01 Javascript
JQuery 中几个类选择器的简单使用介绍
Mar 14 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
Mar 01 Javascript
js拖拽的原型声明和用法总结
Apr 04 Javascript
Js实现京东无延迟菜单效果实例(demo)
Jun 02 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
koa socket即时通讯的示例代码
Sep 07 Javascript
react 兄弟组件如何调用对方的方法示例
Oct 23 #Javascript
详解React 的几种条件渲染以及选择
Oct 23 #Javascript
详解create-react-app 2.0版本如何启用装饰器语法
Oct 23 #Javascript
彻底弄懂 JavaScript 执行机制
Oct 23 #Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 #Javascript
浅谈JavaScript 代码整洁之道
Oct 23 #Javascript
使用jquery Ajax实现上传附件功能
Oct 23 #jQuery
You might like
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
php中的mongodb select常用操作代码示例
2014/09/06 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
通过实例解析Python return运行原理
2020/03/04 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
C++是不是类型安全的
2014/02/18 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
小学捐书活动总结
2014/07/05 职场文书
网络营销计划书
2015/01/17 职场文书
工资证明格式模板
2015/06/12 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书