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 相关文章推荐
一个背景云变换js特效 鼠标移动背景云变化
Dec 28 Javascript
纯JS实现动态时间显示代码
Feb 08 Javascript
jquery仿搜索自动联想功能代码
May 23 Javascript
使用Promise链式调用解决多个异步回调的问题
Jan 15 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 Javascript
浅谈webpack编译vue项目生成的代码探索
Dec 11 Javascript
vue element-ui table表格滚动加载方法
Mar 02 Javascript
浅谈开发eslint规则
Oct 01 Javascript
vue实现一拉到底的滑动验证
Jul 25 Javascript
解决一个微信号同时支持多个环境网页授权问题
Aug 07 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
Jan 04 Javascript
JavaScript oncopy事件用法实例解析
May 13 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
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
php-msf源码详解
2017/12/25 PHP
关于JavaScript的一些看法
2009/05/27 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
基于Python的文件类型和字符串详解
2017/12/21 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
python实现控制台打印的方法
2019/01/12 Python
Python中字符串List按照长度排序
2019/07/01 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python自定义时钟类、定时任务类
2021/02/22 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Python字符串及文本模式方法详解
2020/09/10 Python
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
青春演讲稿范文
2014/05/08 职场文书
会计岗位职责范本
2015/04/02 职场文书
讲座通知范文
2015/04/23 职场文书
舞出我人生观后感
2015/06/16 职场文书