news 2026/4/16 7:42:40

Vue-路由懒加载与组件懒加载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue-路由懒加载与组件懒加载

前言
在构建大型单页应用(SPA)时,JavaScript 包体积(Bundle Size)往往会随着业务增长而膨胀,导致首屏加载缓慢、白屏时间长。懒加载(Lazy Loading)是解决这一问题的核心方案。其本质是将代码分割成多个小的 chunk,仅在需要时才从服务器下载。
一、 路由懒加载:按需拆分页面
1. 为什么需要路由懒加载?
如果不使用懒加载,所有路由对应的组件都会被打包进同一个app.js中。用户访问首页时,浏览器不得不下载整个应用的逻辑,造成严重的性能浪费。
2. 实现方式:ESimport()
利用动态导入语法,打包工具(如 Vite 或 Webpack)会自动进行代码分割(Code Splitting)

// router/index.ts import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'; // 静态导入:会随着主包一起加载,适合首页 import Home from '@/views/Home.vue'; const routes: Array<RouteRecordRaw> = [ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', // 动态导入:只有访问 /about 路径时,浏览器才会请求该组件对应的 JS 文件 component: () => import('@/views/About.vue') } ]; const router = createRouter({ history: createWebHistory(), routes }); export default router;

二、 组件懒加载:细粒度控制
有些组件(如弹窗、复杂的图表、第三方重型库)并不需要在页面初次渲染时立即存在。
1. Vue 3 的defineAsyncComponent
在 Vue 3 中,异步组件必须使用defineAsyncComponent进行显式声明。
示例

<template> <div> <h1>主页面</h1> <button @click="showChart = true">加载并显示报表</button> <AsyncChart v-if="showChart" /> </div> </template> <script setup lang="ts"> import { ref, defineAsyncComponent } from 'vue'; const showChart = ref<boolean>(false); // 显式定义异步组件 const AsyncChart = defineAsyncComponent(() => import('@/components/BigChart.vue') ); // 高级配置(可选):带加载状态 const AsyncComponentWithConfig = defineAsyncComponent({ loader: () => import('./components/MyComponent.vue'), loadingComponent: LoadingComponent, // 加载过程中显示的组件 errorComponent: ErrorComponent, // 加载失败时显示的组件 delay: 200, // 展示加载组件前的延迟时间 timeout: 3000 // 超时时间 }); </script>

2. Vue 2 中直接使用import函数声明异步组件

export default { components: { // 定义一个异步组件 'MyLazyComponent': () => import('./components/MyLazyComponent.vue') } }

三、 底层原理与分包策略
1. 打包工具的配合
当你使用import()时:

  • Vite/Rollup:会自动将该组件及其依赖提取到一个独立的.js文件中。
  • Webpack:会生成一个chunk,你可以通过“魔法注释”自定义 chunk 的名称:
const About = () => import(/* webpackChunkName: "about-group" */ './About.vue')

四、 总结

  1. 首屏优化:建议首页(Home)使用静态导入,而其他非核心路径、非首屏展示的弹窗/插件全部使用懒加载。
  2. 用户体验:使用异步组件时,建议配合loadingComponent,避免加载过程中组件区域出现突兀的空白 。



原文: https://juejin.cn/post/76016061
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 7:51:33

AI 智能体营销与餐厅结合

AI 智能体营销与餐厅结合 深圳刺身配送 - 新号启动内容策略项目背景用户激活四阶段模型第一阶段&#xff1a;认识→认知&#xff08;价值同步&#xff09;核心问题需要回答的6个问题第一阶段内容规划&#xff08;发布顺序&#xff09;内容1&#xff1a;痛点唤醒内容2&#xff1…

作者头像 李华
网站建设 2026/4/13 12:27:13

深度剖析!十五五时期职业教育发展的 4 大核心发展要点

一、"十五五"时期职业教育发展的时代要求 "十五五"时期&#xff08;2026—2030年&#xff09;是我国迈向2035年远景目标、推动高质量发展取得新突破的关键阶段。《建议》聚焦全局性、长远性重大问题作出系统部署&#xff0c;可从三个维度把握职业教育面临…

作者头像 李华
网站建设 2026/4/15 20:47:00

视频转GIF表情怎么弄?在线一键转换,高清流畅无水印

聊天斗图、社群互动、朋友圈整活、自媒体趣味配图&#xff0c;都离不开好用的GIF表情。相比于网上千篇一律的现成表情包&#xff0c;把喜欢的视频片段转成GIF表情&#xff0c;更有个性、更贴合场景&#xff0c;也更容易成为爆款斗图素材。但自己做视频转GIF表情时&#xff0c;很…

作者头像 李华
网站建设 2026/4/9 17:27:18

基于PLC控制的伺服电机的转速控制系统的软件设计

基于PLC控制的伺服电机转速控制系统的软件设计 第一章 绪论 伺服电机转速精准控制是工业自动化设备的核心技术需求&#xff0c;传统伺服电机转速控制多采用专用控制器或简易PLC逻辑&#xff0c;存在转速调节响应滞后、抗干扰能力弱、适配性差等问题&#xff0c;难以满足高精度…

作者头像 李华
网站建设 2026/4/16 7:42:26

基于PLC和组态软件的智能停车场收费系统模拟与实现

基于PLC和组态软件的智能停车场收费系统模拟与实现 第一章 绪论 智能停车场收费系统是城市交通与物业管理的核心配套设施&#xff0c;传统停车场收费多依赖人工计费、手动抬杆&#xff0c;存在计费误差大、通行效率低&#xff08;单车道通行耗时≥20秒&#xff09;、数据统计…

作者头像 李华
网站建设 2026/4/14 6:17:29

【人工智能学习-AI入试相关题目练习-第十七次】

人工智能学习-AI入试相关题目练习-第十七次 1-前言3-问题题目训练4-练习&#xff08;日语版本&#xff09;解析【問題3】空欄補充&#xff08;概念問題&#xff09;① K-means② ベルマン方程式&#xff08;強化学習&#xff09;③ 最急降下法&#xff08;勾配法&#xff09; 【…

作者头像 李华