《Vue Router實戰教程》20.路由懶加載

歡迎觀看《Vue Router 實戰(第4版)》視頻課程

    1. 路由懶加載

當打包構建應用時,JavaScript 包會變得非常大,影響頁面加載。如果我們能把不同路由對應的組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應組件,這樣就會更加高效。

Vue Router 支持開箱即用的動態導入,這意味著你可以用動態導入代替靜態導入:

// 將

// import UserDetails from './views/UserDetails.vue'

// 替換成

const UserDetails = () => import('./views/UserDetails.vue')

const router = createRouter({

??// ...

??routes: [

????{ path: '/users/:id', component: UserDetails }

????// 或在路由定義里直接使用它

????{ path: '/users/:id', component: () => import('./views/UserDetails.vue') },

??],

})

component (和 components) 配置接收一個返回 Promise 組件的函數,Vue Router 只會在第一次進入頁面時才會獲取這個函數,然后使用緩存數據。這意味著你也可以使用更復雜的函數,只要它們返回一個 Promise :

const UserDetails = () =>

??Promise.resolve({

????/* 組件定義 */

??})

一般來說,對所有的路由都使用動態導入是個好主意。

注意

不要在路由中使用異步組件。異步組件仍然可以在路由組件中使用,但路由組件本身就是動態導入的。

如果你使用的是 webpack 之類的打包器,它將自動從代碼分割中受益。

如果你使用的是 Babel,你將需要添加 syntax-dynamic-import 插件,才能使 Babel 正確地解析語法。

      1. 把組件按組分塊

使用 webpack

有時候我們想把某個路由下的所有組件都打包在同個異步塊 (chunk) 中。只需要使用命名 chunk,一個特殊的注釋語法來提供 chunk name (需要 Webpack > 2.4):

const UserDetails = () =>

??import(/* webpackChunkName: "group-user" */ './UserDetails.vue')

const UserDashboard = () =>

??import(/* webpackChunkName: "group-user" */ './UserDashboard.vue')

const UserProfileEdit = () =>

??import(/* webpackChunkName: "group-user" */ './UserProfileEdit.vue')

webpack 會將任何一個異步模塊與相同的塊名稱組合到相同的異步塊中。

使用 Vite

在Vite中,你可以在rollupOptions下定義分塊:

// vite.config.js

export default defineConfig({

??build: {

????rollupOptions: {

??????// https://rollupjs.org/guide/en/#outputmanualchunks

??????output: {

????????manualChunks: {

??????????'group-user': [

????????????'./src/UserDetails',

????????????'./src/UserDashboard',

????????????'./src/UserProfileEdit',

??????????],

????????},

??????},

????},

??},

})

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901462.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901462.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901462.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker 多主機容器組網

一、服務器A 1、初始化Swarm集群(管理節點) docker swarm init --advertise-addr 主節點ip 2、獲取工作節點??加入Swarm集群所需的Token 和完整命令 docker swarm join-token worker 3、創建Overlay網絡 docker network create -d overlay --subnet…

rancher 解決拉取dashboard-shell鏡像失敗的問題

問題背景 在 Kubernetes 集群中部署 Rancher 后,點擊右上角的 "Shell" 按鈕時,Rancher 會動態創建一個 dashboard-shell-xxxxx Pod,用于提供 Web 終端功能。然而,由于默認鏡像 rancher/shell:v0.1.21 托管在 Docker Hu…

OpenCV day2

Matplotlib相關知識 Matplotlib相關操作: import numpy as np from matplotlib import pyplot as pltx np.linspace(0, 2 * np.pi, 100) y1 np.sin(x) y2 np.cos(x)# 使用紅色虛線,圓點標記,線寬1.5,標記大小為6繪制sin plt.p…

【網絡安全】通過 JS 尋找接口實現權限突破

未經許可,不得轉載。 本文所述所有風險點均已修復。 文章目錄 引言正文引言 以下些漏洞已被起亞方面修復;起亞方面確認,這些漏洞從未被惡意利用過。 2024年6月11日,我們發現起亞汽車存在一系列嚴重安全漏洞,攻擊者僅憑車牌號即可遠程控制車輛的核心功能。該攻擊不需要接觸…

LabVIEW 發電機勵磁系統監測與診斷

在現代工業體系中,發電機作為關鍵的電能轉換設備,其穩定運行對于電力供應的可靠性起著決定性作用。而勵磁系統作為發電機的核心控制部分,直接影響著發電機的性能和電力系統的穩定性。一旦勵磁系統出現故障,可能引發發電機電壓波動…

MacOS紅隊常用攻擊命令

MacOS紅隊常用攻擊命令 1.自動化武器2.系統信息3.服務 & 內核信息4.快捷命令5.網絡相關6.brew相關 / 軟件包相關7.高權限命令8.創建一個管理員權限的后門用戶 1.自動化武器 1、linPEAS LinPEAS 是一個腳本,用于在 Linux/Unix/MacOS 主機上搜索提權路徑 2、me…

【數據結構_8】棧和隊列

一、反向輸出鏈表元素 Ⅰ使用遞歸進行反向輸出 package stack; public class Test2 {static class Node{public String val;public Node next;//構造方法public Node(String val) {this.val val;this.next null;}}//利用遞歸來反向輸出鏈表public static void reverse(Nod…

Java 正則表達式綜合實戰:URL 匹配與源碼解析

在 Web 應用開發中,我們經常需要對 URL 進行格式驗證。今天我們結合 Java 的 Pattern 和 Matcher 類,深入理解正則表達式在實際應用中的強大功能,并剖析一段實際的 Java 示例源碼。 package com.RegExpInfo;import java.util.regex.Matcher; …

蝦分發平臺平臺優勢

平臺優勢 高效與成本優化 一鍵分發與自動化工具減少人工操作,加速測試周期;免費分發流量和透明價格套餐降低中小團隊開支。 安全與合規 自研CDN與封裝技術平衡性能與安全性,適配復雜分發場景;全球CDN網絡加速保障極速下載。 服務…

c語言學習16——內存函數

內存函數 一、memcpy使用和模擬實現1.1參數1.2 使用1.3 模擬實現 二、memmove使用和模擬實現2.1 參數2.2 使用2.3 模擬實現 三、memset使用3.1 參數3.2 使用 四、memcmp使用4.1 參數4.2 使用 一、memcpy使用和模擬實現 1.1參數 因為內存中不知道存的是什么類型的地址&#xff…

TLA:用于接觸-豐富操作的觸覺-語言-動作模型

25年3月來自三星中國研發中心、中科院自動化所和北京智源的論文“TLA: Tactile-Language-Action Model for Contact-Rich Manipulation”。 視覺-語言模型已取得顯著進展。然而,在語言條件下進行機器人操作以應對接觸-密集型任務方面,仍未得到充分探索&…

【JavaEE】SpringBoot 統一功能處理

目錄 一、攔截器1.1 使用1.1 定義攔截器1.2 注冊配置攔截器 1.2 攔截器詳解1.2.1 攔截路徑1.2.2 攔截器執?流程 1.3 適配器模式 二、統一數據返回格式2.1 簡單用法2.2 問題及解決 三、統一異常處理 一、攔截器 攔截器:攔截器是Spring框架提供的核?功能之?&#…

【前端實戰】使用 BroadcastChannel API 實現跨標簽頁通信

一、引言 在現代 Web 應用開發中,我們常常會遇到需要在不同瀏覽器標簽頁之間進行通信的需求。例如,在一個電商應用中,用戶在一個標簽頁中添加商品到購物車,希望在其他標簽頁中也能實時顯示購物車的更新信息。傳統的實現方式可能會…

微信小程序 - [渲染層錯誤] Uncaught TypeError: Cannot read property ‘D‘ of undefined

問題:[渲染層錯誤] Uncaught TypeError: Cannot read property D of undefined 解決: 該錯誤可能還是小程序的渲染模式有關系,查看app.json中是否有如下配置,刪除即可,或者降低小程序調試基礎庫版本。

【MySQL高級】事務,存儲引擎,索引(一)

Mysql高級 DQL查詢語句 反引號 模糊查詢避免%出現在開頭,會造成索引失效 order by排序先后 表名列名都需要用${},他們不能帶’’ 去重統計數量 null的運算 分組函數會自動忽略null,不用對null進行處理 截取子串substr(字段,下標…

面試篇 - GPT-1(Generative Pre-Training 1)

GPT-1(Generative Pre-Training 1) ?模型結構 Transformer only-decoder:GPT-1模型使用了一個12層的Transformer解碼器。具體細節與標準的Transformer相同,但位置編碼是可訓練的。 注意力機制: 原始Transformer的解…

ubuntu24.04 cmake 報錯 libldap-2.5.so.0 解決辦法

apt cmake有毛病 換源重新安裝 wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" sudo apt update sudo apt in…

ScholarCopilot:“學術副駕駛“

這里寫目錄標題 引言:學術寫作的痛點與 AI 的曙光ScholarCopilot 的核心武器庫:智能生成與精準引用智能文本生成:不止于“下一句”智能引用管理:讓引用恰到好處 揭秘背后機制:檢索與生成的動態協同快速上手&#xff1a…

vivo X200 Ultra前瞻系列(2):vivo X200 Ultra影像技術溝通會總結

vivo于今日(2025年4月14日)舉辦的“X系列藍圖影像技術溝通會”中,正式發布了vivo X200 Ultra,展示了其在移動影像領域的多項技術突破。以下是本次溝通會的核心內容總結: 1. 硬件革新:蔡司三焦段鏡頭與雙芯架構 蔡司三大定焦大師鏡頭: X200 Ultra采用14mm超廣角(“鷹眼”…

代碼隨想錄第17天:二叉樹

一、二叉搜索樹的最近公共祖先(Leetcode 235) 由于是二叉搜索樹,節點的值有嚴格的順序關系:左子樹的節點值都小于父節點,右子樹的節點值都大于父節點。利用這一點,可以在樹中更高效地找到最低公共祖先。 c…