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 相关文章推荐
JavaScript 新手24条实用建议[TUTS+]
Jun 21 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
Nov 24 Javascript
在js文件中写el表达式取不到值的原因及解决方法
Dec 23 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 Javascript
jquery dataview数据视图插件使用方法
Dec 23 Javascript
爬虫利器Puppeteer实战
Jan 09 Javascript
JavaScript实现简单计算器功能
Dec 19 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 Javascript
vue element 关闭当前tab 跳转到上一路由操作
Jul 22 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
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入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
js列举css中所有图标的实现代码
2011/07/04 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
Python实现的双色球生成功能示例
2017/12/18 Python
用python实现百度翻译的示例代码
2018/03/09 Python
python 定时修改数据库的示例代码
2018/04/08 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
Linux常见面试题
2016/10/04 面试题
审核会计岗位职责
2013/11/08 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
爱国演讲稿500字
2014/05/04 职场文书
计生工作先进事迹
2014/08/15 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
装修安全责任协议书
2016/03/22 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
Django框架中模型的用法
2022/06/10 Python