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 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
May 30 Javascript
document节点对象的获取方式示例介绍
Dec 24 Javascript
用JavaScript获取页面文档内容的实现代码
Jun 10 Javascript
JSP防止网页刷新重复提交数据的几种方法
Nov 19 Javascript
详解Vue.js搭建路由报错 router.map is not a function
Jun 27 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
webpack file-loader和url-loader的区别
Jan 15 Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
Nov 20 Javascript
使用jQuery实现购物车
Oct 29 jQuery
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 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 output buffering缓存及程序缓存深入解析
2013/07/15 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
php的常量和变量实例详解
2017/06/27 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
jquery中filter方法用法实例分析
2015/02/06 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
Python金融数据可视化汇总
2017/11/17 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
Python extract及contains方法代码实例
2020/09/11 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
使用python实现学生信息管理系统
2021/02/25 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
教师党员思想汇报
2014/01/06 职场文书
会议邀请函范文
2014/01/09 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL