当前位置: 首页 > article >正文

路由懒加载

路由懒加载

前言

在 spa(单页面应用)项目中,一个路由通常对应着一个页面。如果不做特殊处理,在把项目打包后,所有的页面将打包成一个文件。这种处理方式会导致首页需要一次性加载所有资源,从而影响了用户体验。

为了解决这个问题,可以使用路由懒加载。本文将介绍什么是路由懒加载,它的原理,优点和缺点,以及应用场景和示例代码等相关知识。

路由懒加载的原理

路由懒加载的本质:是将代码划分为一块块小的模块,只有在用户访问到某个页面时才会请求加载对应的模块

要实现懒加载,首先需要将进行懒加载的子模块分离出来,然后打包成一个单独的文件。es6 的动态加载模块 import() 可以用来实现这一功能。调用 import() 的地方被视为分割点。这意味着被请求的模块以及它所引用的所有子模块会被分割到单独的块中。这样,就可以按需引入对应的模块了

路由懒加载的优点

使用路由懒加载主要有以下两个优点:

  • 减少初始化加载时间:只在需要的时候才加载,spa 原本是全加载的,现在可以按需加载
  • 提高性能:因为只加载最小化/及时的代码,所以路由懒加载可以提高整体性能

路由懒加载的缺点

然而使用路由懒加载也有一些不足之处:

  • 多请求带来的网络性能问题:SPA加载页面时就发送一次请求,而路由懒加载把整个文件分割了,得发送多个请求,可能会增加网络延迟和带宽要求
  • 不支持浏览器原生的预加载指令:本质不同,一个按需加载,一个预先加载

应用场景

  • 大型应用程序:大量页面,一次性加载的话花费时间长
  • 移动应用程序:移动设备上,带宽和资源限制更为严格

使用案例

使用箭头函数和import()异步引入组件来实现懒加载

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)
//方式一:
const Home = () => import('./views/Home.vue')
//方式二:
//const Home = () => import(/* webpackChunkName: "home" */ './views/Home.vue')

const About = () => import('./views/About.vue')

export default new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home
    },
    {
      path: '/about',
      name: 'about',
      component: About
    }
  ]
})

注意:

  • 想要支持旧版浏览器,需要安装@babel/plugin-syntax-dynamic-import插件来转换动态导入语法
  • 使用 webpackChunkName 可以给打包的后各个chunk命名,方便管理

结语

感谢读者阅读并关注博客文章,并对文章中提到的观点、建议或批评表示感谢


http://www.kler.cn/a/14586.html

相关文章:

  • 五一黄山游玩攻略
  • Linux进程概念——其二
  • echarts双Y轴对齐;echarts堆叠柱状图;echarts数据集dataset结构;
  • [Gitops--4] OpenELB
  • python算法中的机器学习算法之半监督学习和强化学习(详解)
  • 5年了,终于入职阿里测试岗位,直接涨薪30K...
  • 协众信息技术APP视觉设计规范
  • 代码随想录Day61
  • 「 计算机网络 」TCP的粘包拆包问题
  • uniapp请求图片时候发现提示GET http://localhost:xxxx/undefined 401,undefined:1解决办法【伸手党福利】
  • 如何使用Truffle开发太坊智能及其区块链
  • 使用PCL滤波器实现点云裁剪
  • 在 Apple 设备(包括 iPad、iOS 和 MacBook)上为用户提供完整的 SAP GUI
  • 203、【栈与队列】leetcode ——剑指 Offer II 040. 矩阵中最大的矩形 / 85. 最大矩形:暴力+单调栈(C++/Pyhont版本)
  • 基于springboot“漫画之家”系统(附源码、设计文档)
  • K8S第一讲 Kubernetes之Secret详解
  • ansible自动运维——ansible使用临时命令通过模块来执行任务
  • Spring Boot中使用Redis
  • Cloud Kernel SIG月度动态:发布 Anolis 8.8 镜像、kABI 社区共建流程
  • 代码随想录_贪心_leetcode 1005 134