React 路由懒加载的几种实现方案

这篇文字简单的介绍了React在路由懒加载方面的几种实现方案。

传统的两种方式

import()

符合ECMAScript提议的import()语法,该提案与普通 import 语句或 require 函数的类似,但返回一个 Promise 对象。这意味着模块时异步加载的

webpack v2+ 使用

使用方式

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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 指定使用方式

使用方式

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

相对于前两种,此种方式写法更为简洁。

使用方式

?


1

2

3

4

5

6

7

8

9

10

11

// webpack 配置文件中 使用lazyload-loader(必须将lazuyload-loader 放置在use的最右侧)

module: {

  rules: [

   {

    test: /\.(js|jsx)$/,,

    use: [

     ‘babel-loader‘,

     ‘lazyload-loader‘

    ]

   },

业务代码中

?


1

2

3

4

5

6

// 使用lazy! 前缀 代表需要懒加载的Router

import Shop from ‘lazy!./src/view/Shop‘;

// Router 正常使用

<Route path="/shop" component={Shop} />

原理 : https://github.com/rongchanghai/lazyload-loader

     
NodeJS+Express+mongoDB+Bootstrap的全栈式工程化开发前后端分离博客系统实战
Node.js+Koa+ES6+Mongodb+Express实战移动网站及微信二网合一前后端项目
Node+Express入门+进阶+实战(HTML5+AJAX+Node.js+Express的组合开发Web聊天应用)
实例讲解基于 React+Redux 的前端开发流程
React Native零基础入门到项目实战
HTML5+Vue.js+Koa+zepto框架综合实战移动webAPP整站项目完整成型过程
移动端开发框架Zepto.js真实案例带你入门+实战移动端商城Web APP
带你诱人的Ruby,手把手一起做Web app之 ruby on rails web开发学习实录
爱创课堂张容铭js高级课程backbone企业级实战教程基础+实战图片网项目视频
爱创课堂张容铭js高级课程Vue.js企业级实战教程基础+实战团购项目视频课程
爱创课堂张容铭js高级课程Angular企业级实战教程(基础+实战后台管理系统)课程
小码哥jQuery实战带你搞定旋转木马特效(赵延明老师)
web前后端全漏洞原理+攻击手段+测试方法+预防措施精讲视频教程
mock.js-无需等待,让前端独立于后端进行开发--NodeJS搭建服务端调试接口实战京东...  ...2
web前端高级全栈工程师高薪特训英班开完整版(价值381元)
潭州全栈web前端:从原生javescript到jQuery交互实战视频课程
T3 - 构建大型 Web 应用的 JavaScript 框架视频教程
高手之路!网页设计师应该知道的960网格系统的CSS架构
一套精美通用系统后台管理UI模板系统框架结构讲解演示地址、详细代码 
打造全栈工程师之前后端分离的网上商城实战及系统架构解析

原文地址:https://www.cnblogs.com/xanthedsf/p/10163945.html

时间: 2024-08-27 23:50:11

React 路由懒加载的几种实现方案的相关文章

vue项目实现路由按需加载(路由懒加载)的3种方式

为什么需要懒加载? 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出啊先长时间的白屏,即使做了loading也是不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时 vue异步组件es提案的import()webpack的require,ensure()1 . vue异步组件技术 ==== 异步加载 vue-router配置路由 , 使用

vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、一级mockjs用法、路由懒加载三种方式

不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p>Element UI简单Cascader级联选择器使用</p> <el-cascader :options='options' v-model="selectedOptions" @change="handleChange"> </el-

React多级路由懒加载问题

React启用懒加载后,react-router使用BrowserRoute模式,二级路由页面加载其他页面时会报错“找不到相应的chunk文件”. 如页面demo/A中懒加载demo/B,会报错“react-dom.development.js:13035 Uncaught ChunkLoadError: Loading chunk B failed.”.查看network请求发现懒加载B时的js请求路径为demo/B/js/chunkName.js,而webpack打包后的统一放在了路径dis

前端项目首屏加速 gzip打包 路由懒加载 cdn资源优化

目前主流的Vue, React 等单页项目中 build 把所有开发遇到的代码打包在一起形成一个js和一个css, 服务器请求, 然后加载js, css 等依赖进行渲染. 因此会经常遇到,个人写的项目,打开十分缓慢,需要加载很长时间才能加载完毕. 就算不是白屏,做了loading处理 但还是会很影响体验 排除服务器带宽实在太低, 服务器压力实在太大, 文件的大小是速度的第一影响. gzip打包 gzip打包很好理解. 请求的东西可以通过压缩的方式, 到了客户端再解压 采用nginx即可 配置方案

vue 路由懒加载

题外: 我司目前的后台管理网站依旧是 jq + xxUI 构成的 ,早就想把 丫儿 个换成 vue了, 苦于整个组几乎一致处于一个忙碌的状态,没有时间来重构. 然鹅,昨天今天组长找到我说要用 vue 搞起来,这个问题不大,毕竟之前用他完成了几个项目,颇有收获,教训满满. 看着 左侧 冗长菜单 item ,不禁陷入了沉思. 当打包构建应用时,Javascript 包会变得非常大,首次加载即便使用了 各种 LOADING ,各种 动画,肯定体验贼差, 如果我们能把不同路由对应的组件分割成不同的代码块

The way of Webpack learning (III.) -- codeSplitting &amp; lazyLoding(代码分割和路由懒加载)

代码分割:对于一个大型的web项目来说,如果为了减少http请求,只打包出一个bundle.js文件,那么只要我们的需求修改了一点点,整个bundle.js都需要重新加载,得不偿失.所以我们不妨把代码分割成一块一块的,按需加载,而且还能利用浏览器缓存机制,如果文件没有修改,直接从缓存读取.也就是说,代码分割就是把代码切成很多块(chunk). 懒加载:按需加载,页面需要什么文件我才去加载什么文件.我现在只知道应用在路由懒加载中,就是根据路由,按需加载不同的文件. 在上一章节提到使用Commonc

前端性能优化方案-路由懒加载实现

组件懒加载也叫按需加载: 当打包构建应用时,JavaScript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 打包 build 后的 dist 中 js 包文件太大,影响页面加载速度,使用 vue 的异步组件和 webpack 的代码分割功能,实现路由组件的懒加载: 下面通过 vue 的异步加载和 webpack 来实现组件懒加载: 先看例子不使用路由懒加载的情况: import Vue from 'v

vue路由懒加载及组件懒加载

vue路由懒加载及组件懒加载: https://www.cnblogs.com/-roc/p/9983177.html 一.为什么要使用路由懒加载 为给客户更好的客户体验,首屏组件加载速度更快一些,解决白屏问题. 二.定义 懒加载简单来说就是延迟加载或按需加载,即在需要的时候的时候进行加载. 三.使用 常用的懒加载方式有两种:即使用vue异步组件 和 ES中的import 1.未用懒加载,vue中路由代码如下 import Vue from 'vue' import Router from 'v

【凡尘】---vue路由懒加载---【vue】

一.懒加载 也叫延迟加载或者按需加载,即在需要的时候进行加载,   二.为什么要使用懒加载 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出啊先长时间的白屏,即使做了loading也是不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时 简单的说就是:进入首页不用一次加载过多资源造成用时过长 三.非懒加载的路由配置项 四.vue异步组件实