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下操作HTML控件的实现代码
Jan 12 Javascript
javascript数组去掉重复
May 12 Javascript
json格式的时间显示为正常年月日的方法
Sep 08 Javascript
Javascript控制div属性动态变化实例分析
Oct 08 Javascript
基于BootStrap环境写jQuery tabs插件
Jul 12 Javascript
整理关于Bootstrap表单的慕课笔记
Mar 29 Javascript
JavaScript实现网页头部进度条刷新
Apr 16 Javascript
Vue如何实现组件的源码解析
Jun 08 Javascript
jquery实现的简单轮播图功能【适合新手】
Aug 17 jQuery
深入学习JavaScript中的bom
May 27 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
Apr 07 Javascript
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
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大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
2016/10/08 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
python同步两个文件夹下的内容
2019/08/29 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
解释一下Windows的消息机制
2014/01/30 面试题
兼职业务员岗位职责
2014/01/01 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
初中班主任评语
2014/04/24 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
python 调用js的四种方式
2021/04/11 Python
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
快速学习Oracle触发器和游标
2021/06/30 Oracle
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers