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 相关文章推荐
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
Add a Table to a Word Document
Jun 15 Javascript
基于jquery的返回顶部效果(兼容IE6)
Jan 17 Javascript
基于jquery的放大镜效果
May 30 Javascript
js函数setTimeout延迟执行的简单介绍
Jul 17 Javascript
JavaScript实现数字数组按照倒序排列的方法
Apr 06 Javascript
JS实现选择TextArea内文本的方法
Aug 03 Javascript
javascript宿主对象之window.navigator详解
Sep 07 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
在JavaScript中使用严格模式(Strict Mode)
Jun 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
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
理解javascript正则表达式
2016/03/08 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
Python单元和文档测试实例详解
2019/04/11 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
投标承诺书范本
2014/03/27 职场文书
大学同学会活动方案
2014/08/20 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
普通党员对照检查材料
2014/09/24 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书