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 相关文章推荐
破解Session cookie的方法
Jul 28 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
Oct 23 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
JS实现加载和读取XML文件的方法详解
Apr 24 Javascript
node.js操作mongodb简单示例分享
May 25 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
详解Vue单元测试case写法
May 24 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
vue项目部署到nginx/tomcat服务器的实现
Aug 26 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
Jul 07 Javascript
Node.js 中判断一个文件是否存在
Aug 24 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
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
php实现的ping端口函数实例
2014/11/12 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
轮播的简单实现方法
2016/07/28 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
Vue父子传递实例讲解
2020/02/14 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
军训心得体会
2013/12/31 职场文书
爷爷追悼会答谢词
2014/01/24 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
学雷锋月活动总结
2014/04/25 职场文书
大专学生求职信
2014/07/04 职场文书
农业项目合作意向书
2015/05/08 职场文书