news 2026/7/2 0:13:37

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/28 21:28:10

调用乐天平台API获取商品详情数据

乐天平台提供了丰富的API接口&#xff0c;允许开发者获取平台上的各类数据。其中&#xff0c;获取商品详情&#xff08;通常称为 letian 详情&#xff09;是一个常见的需求。本文将介绍如何调用乐天平台的相关API来获取商品详情数据。1. 准备工作在开始调用API之前&#xff0c;…

作者头像 李华
网站建设 2026/6/28 23:42:31

CI/CD 工具选型指南:Argo CD vs Jenkins vs Arbess

面对众多的CI/CD工具&#xff0c;如何根据功能、价格和易用性做出选择&#xff1f;本文旨在通过多款工具的横向对比&#xff0c;为你提供清晰的梳理与参考。1、Argo CD 1.1 产品介绍Argo CD 是一款基于 GitOps 模型的 Kubernetes 持续交付工具&#xff0c;通过声明式配置实现应…

作者头像 李华
网站建设 2026/6/29 0:25:34

ubuntu24 如何查杀木马病毒?

在 Ubuntu 24.04 中查杀木马病毒主要依赖系统自带的工具、开源安全软件以及良好的安全实践。以下是详细的步骤和建议&#xff1a; 1. 确认系统更新 更新软件包&#xff1a;确保系统和所有软件为最新版本&#xff0c;修复已知漏洞。sudo apt update && sudo apt upgrad…

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

AI代码执行领域爆出首个满分高危漏洞:CVE-2026-22686

2026年开年&#xff0c;AI代码执行领域爆出首个满分高危漏洞CVE-2026-22686&#xff0c;该漏洞直指Node.js生态中专为AI代理设计的enclave-vm沙箱&#xff0c;其CVSS 3.1评分达到10.0满分级别&#xff0c;成为继各类语言解释器漏洞后&#xff0c;AI时代代码隔离场景下的重大安全…

作者头像 李华