news 2026/6/10 14:32:27

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/6/10 15:35:16

基于plc拉杆箱振动与噪音检测平台设计

基于PLC的拉杆箱振动与噪音检测平台设计 第一章 绪论 拉杆箱的振动与噪音水平是衡量其品质与使用体验的核心指标&#xff0c;传统检测方式多依赖人工主观判断或简易仪器测试&#xff0c;存在检测标准不统一、数据误差大&#xff08;振动幅值偏差≥0.5mm、噪音值偏差≥3dB&#…

作者头像 李华
网站建设 2026/6/9 20:35:26

数字人民币:概念、历史、内容与发展战略!

数字人民币&#xff08;e-CNY&#xff09;是中国人民银行发行的数字形式法定货币&#xff0c;它并非简单的支付工具升级&#xff0c;而是中国金融基础设施的一次深刻变革。下面这个表格梳理了其核心脉络&#xff0c;帮助你快速把握全局。维度核心内容基本概念数字形式的法定货币…

作者头像 李华
网站建设 2026/6/10 14:20:06

招聘“脆皮青年”?这样评估韧性更有效!

近来&#xff0c;“脆皮青年”成了网络热词&#xff0c;形容那些看似健康、但精神或情绪容易“脆裂”的年轻人。当这批成长于信息爆炸、压力多维时代的Z世代乃至更年轻的群体&#xff0c;大量进入实习与校招通道时&#xff0c;如何筛选出兼具专业潜力与心理韧性的候选人&#x…

作者头像 李华
网站建设 2026/6/10 15:04:00

深度测评8个降AI率网站 千笔帮你轻松降AIGC

AI降重工具&#xff1a;让论文更自然&#xff0c;让查重更轻松 随着AI技术在学术写作中的广泛应用&#xff0c;越来越多的专科生开始面临一个共同的问题——论文中AI生成内容的比例过高&#xff0c;导致AIGC率超标&#xff0c;影响最终成绩。如何在保持原文意思不变的前提下&am…

作者头像 李华