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之十二 删除事件核心方法
Jul 31 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
jQuery DOM删除节点操作指南
Mar 03 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
基于javascript实现图片预加载
Jan 05 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
Mar 31 Javascript
gulp解决跨域的配置文件问题
Jun 08 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
Aug 25 Javascript
详解Vue依赖收集引发的问题
Apr 22 Javascript
7个好用的JavaScript技巧分享(译)
May 07 Javascript
基于javascript的无缝滚动动画1
Aug 07 Javascript
jquery实现异步文件上传ajaxfileupload.js
Oct 23 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中chdir()函数用法实例
2014/11/13 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
js选项卡的制作方法
2017/01/23 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python正则表达式完全指南
2017/05/25 Python
Python实现购物程序思路及代码
2017/07/24 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python类的实例化问题解决
2019/08/31 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
Python用input输入列表的实例代码
2020/02/07 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
2013英文求职信模板范文
2013/11/15 职场文书
大课间活动制度
2014/01/18 职场文书