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

vue路由懒加载

在 Vue 项目中,路由懒加载是通过 动态 import 实现的:

  1. 我们在 vue-router 的路由配置里,把 component 写成一个函数,返回 import() 语句:
import Vue from 'vue'
import VueRouter from 'vue-router'Vue.use(VueRouter)const routes = [{path: '/about',component: () => import('@/views/About.vue')  // 懒加载}
]const router = new VueRouter({ routes })
export default router

这样 Webpack/Vite 会把 About.vue 单独打包成一个 chunk,只有当用户访问 /about 时才会加载这个文件,从而减少首屏体积。

  1. 如果需要调试更直观,可以使用 Webpack 魔法注释 给 chunk 命名:
const routes = [{path: '/home',component: () => import(/* webpackChunkName: "home" */ '@/views/Home.vue')},{path: '/about',component: () => import(/* webpackChunkName: "about" */ '@/views/About.vue')}
]

这里多了一个注释 /* webpackChunkName: “home” */

  • 打包后生成 home.js、about.js等独立文件

  • 好处是文件名可控,调试和分析 bundle 的时候更直观

常见魔法注释:

  • webpackChunkName: 指定 chunk 的名字

  • webpackPrefetch: true: 告诉浏览器空闲时预取这个 chunk

  • webpackPreload: true: 高优先级预加载

  1. 在 Vue3 里,还可以用 defineAsyncComponent 来实现懒加载,同时加上 loading/error 组件:
import { defineAsyncComponent } from 'vue'const About = defineAsyncComponent(() => import('@/views/About.vue'))const routes = [{ path: '/about', component: About }
]

可以自定义 加载中组件 / 错误组件 / 延迟加载时间:

const AsyncAbout = defineAsyncComponent({loader: () => import('@/views/About.vue'),loadingComponent: Loading,errorComponent: LoadError,delay: 200, // 200ms 后才显示 loadingtimeout: 3000 // 超过 3s 报错
})
  1. 对于 Nuxt3 这类框架,页面路由是 自动懒加载 的,不需要手动配置。

总结

路由懒加载的本质是 利用动态 import 进行代码分割,在 vue-router 中把 component 写成一个返回 import() 的函数,Webpack/Vite 会自动打包成独立的 chunk,只有在访问该路由时才会请求对应的 JS 文件,从而降低首屏加载压力。

http://www.dtcms.com/a/336623.html

相关文章:

  • 数据链路层(1)
  • Linux操作系统软件编程——多线程
  • 基于飞算JavaAI实现高端算法性能优化:从理论到落地的性能跃迁实践
  • C++---迭代器删除元素避免索引混乱
  • 【Golang】:函数和包
  • 因果语义知识图谱如何革新文本预处理
  • os详解,从上面是‘os‘模块?到核心组成和常用函数
  • 智能合约里的 “拒绝服务“ 攻击:让你的合约变成 “死机的手机“
  • 什么是AI Agent(智能体)
  • nature子刊:MCNN基于电池故障诊断的模型约束的深度学习方法
  • [Oracle数据库] Oracle 多表查询
  • 网络常识-我的电脑啥时安装了证书
  • 生成模型实战 | InfoGAN详解与实现
  • java如何使用正则提取字符串中的内容
  • 谈谈对面向对象OOP的理解
  • 深入分析 Linux PCI Express 子系统
  • Highcharts 官方文档与 API 查询技巧解析
  • android aidl相关学习
  • 【昇腾】单张48G Atlas 300I Duo推理卡MindIE+WebUI方式跑14B大语言模型_20250817
  • 在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • redis和cdn的相似性和区别
  • 编程算法实例-最小公倍数
  • Python自学09-常用数据结构之元组
  • 黑马商城day08-Elasticsearch作业(个人记录、仅供参考、详细图解)
  • 嵌入式系统中的签名验证:设计与原理解析(C/C++代码实现)
  • Java基础Object中常见问题解析
  • Redis面试精讲 Day 24:Redis实现限流、计数与排行榜
  • 数字货币的法律属性与监管完善路径探析
  • SCAI采用公平发射机制成功登陆LetsBonk,60%代币供应量已锁仓