最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue路由懶加載與組件懶加載示例詳解

 更新時間:2026年03月11日 08:54:17   作者:發(fā)現(xiàn)一只大呆瓜  
懶加載也稱為延遲加載,是一種將資源(如圖片、組件、代碼等)推遲到需要的時候再加載的策略,這篇文章主要介紹了Vue路由懶加載與組件懶加載的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

在構(gòu)建大型單頁應用(SPA)時,JavaScript 包體積(Bundle Size)往往會隨著業(yè)務(wù)增長而膨脹,導致首屏加載緩慢、白屏時間長。懶加載(Lazy Loading) 是解決這一問題的核心方案。其本質(zhì)是將代碼分割成多個小的 chunk,僅在需要時才從服務(wù)器下載。

一、 路由懶加載:按需拆分頁面

1. 為什么需要路由懶加載?

如果不使用懶加載,所有路由對應的組件都會被打包進同一個 app.js 中。用戶訪問首頁時,瀏覽器不得不下載整個應用的邏輯,造成嚴重的性能浪費。

2. 實現(xiàn)方式:ESimport()

利用動態(tài)導入語法,打包工具(如 Vite 或 Webpack)會自動進行 代碼分割(Code Splitting) 。

// router/index.ts
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';

// 靜態(tài)導入:會隨著主包一起加載,適合首頁
import Home from '@/views/Home.vue';

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    // 動態(tài)導入:只有訪問 /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')
);

// 高級配置(可選):帶加載狀態(tài)
const AsyncComponentWithConfig = defineAsyncComponent({
  loader: () => import('./components/MyComponent.vue'),
  loadingComponent: LoadingComponent, // 加載過程中顯示的組件
  errorComponent: ErrorComponent,     // 加載失敗時顯示的組件
  delay: 200,                         // 展示加載組件前的延遲時間
  timeout: 3000                       // 超時時間
});
</script>

2. Vue 2 中直接使用import函數(shù)聲明異步組件

export default {
  components: {
    // 定義一個異步組件
    'MyLazyComponent': () => import('./components/MyLazyComponent.vue')
  }
}

三、 底層原理與分包策略

1. 打包工具的配合

當你使用 import() 時:

  • Vite/Rollup:會自動將該組件及其依賴提取到一個獨立的 .js 文件中。

  • Webpack:會生成一個 chunk,你可以通過“魔法注釋”自定義 chunk 的名稱:

    const About = () => import(/* webpackChunkName: "about-group" */ './About.vue')
    

四、 總結(jié)

  1. 首屏優(yōu)化:建議首頁(Home)使用靜態(tài)導入,而其他非核心路徑、非首屏展示的彈窗/插件全部使用懶加載。

  2. 用戶體驗:使用異步組件時,建議配合 loadingComponent,避免加載過程中組件區(qū)域出現(xiàn)突兀的空白 。

到此這篇關(guān)于Vue路由懶加載與組件懶加載的文章就介紹到這了,更多相關(guān)Vue路由與組件懶加載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue可用于拖動排序組件示例

    vue可用于拖動排序組件示例

    這篇文章主要為大家介紹了vue可用于拖動排序組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • vue路由跳轉(zhuǎn)時判斷用戶是否登錄功能的實現(xiàn)

    vue路由跳轉(zhuǎn)時判斷用戶是否登錄功能的實現(xiàn)

    下面小編就為大家?guī)硪黄獀ue路由跳轉(zhuǎn)時判斷用戶是否登錄功能的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Vue組件教程之Toast(Vue.extend 方式)詳解

    Vue組件教程之Toast(Vue.extend 方式)詳解

    這篇文章主要給大家介紹了關(guān)于Vue組件教程之Toast(Vue.extend 方式)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • vue項目實現(xiàn)圖片上傳功能

    vue項目實現(xiàn)圖片上傳功能

    這篇文章主要為大家詳細介紹了vue項目實現(xiàn)圖片上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Vue lazyload圖片懶加載實例詳解

    Vue lazyload圖片懶加載實例詳解

    本文通過實例代碼給大家介紹了Vue lazyload圖片懶加載的相關(guān)知識,通過導入配置等操作src/main.jswenj ,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-12-12
  • vue長列表優(yōu)化之虛擬列表實現(xiàn)過程詳解

    vue長列表優(yōu)化之虛擬列表實現(xiàn)過程詳解

    前端的業(yè)務(wù)開發(fā)中會遇到不使用分頁方式來加載長列表的需求,下面這篇文章主要給大家介紹了關(guān)于vue長列表優(yōu)化之虛擬列表實現(xiàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • vue原生方法自定義右鍵菜單

    vue原生方法自定義右鍵菜單

    這篇文章主要為大家詳細介紹了vue原生方法自定義右鍵菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue3渲染器與渲染函數(shù)的用法詳解

    Vue3渲染器與渲染函數(shù)的用法詳解

    Vue3渲染器將虛擬DOM轉(zhuǎn)為真實DOM,支持高效更新與跨平臺;渲染函數(shù)(h())替代JSX,更靈活,與CompositionAPI結(jié)合可優(yōu)化性能,提升復雜場景下的開發(fā)效率與應用性能
    2025-08-08
  • Vue關(guān)鍵字搜索功能實戰(zhàn)小案例

    Vue關(guān)鍵字搜索功能實戰(zhàn)小案例

    在vue項目中,搜索功能是我們經(jīng)常需要使用的一個場景,下面這篇文章主要給大家介紹了關(guān)于Vue關(guān)鍵字搜索功能的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Vue前端開發(fā)之實現(xiàn)交錯過渡動畫效果

    Vue前端開發(fā)之實現(xiàn)交錯過渡動畫效果

    這篇文章主要為大家詳細介紹了如何通過Vue實現(xiàn)交錯過渡動畫效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11

最新評論

平原县| 宝丰县| 北辰区| 新晃| 长丰县| 扎鲁特旗| 松溪县| 昔阳县| 稷山县| 太湖县| 鸡泽县| 和硕县| 平乐县| 田阳县| 东兴市| 桃园县| 工布江达县| 凉城县| 宜黄县| 登封市| 新绛县| 利川市| 开封县| 淮北市| 凌源市| 武隆县| 论坛| 博野县| 宁德市| 兰州市| 吴堡县| 阿图什市| 澄城县| 习水县| 周宁县| 溧阳市| 芜湖县| 和田市| 乃东县| 资溪县| 延安市|