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

Vue中import為什么可以異步加載示例詳解

 更新時(shí)間:2026年05月28日 10:47:10   作者:小小小小宇  
異步組件是實(shí)現(xiàn)這一目標(biāo)的一種高效方式,它允許Vue在需要時(shí)才加載組件的代碼,從而顯著減少應(yīng)用的初始加載時(shí)間,這篇文章主要介紹了Vue中import為什么可以異步加載的相關(guān)資料,需要的朋友可以參考下

這個(gè)問(wèn)題涉及兩個(gè)層面:JavaScript 語(yǔ)言層面的動(dòng)態(tài) importVue 框架對(duì)異步組件的封裝。

1. JavaScript 動(dòng)態(tài)import()—— 語(yǔ)言基礎(chǔ)

ES2020 引入了 動(dòng)態(tài) import() 語(yǔ)法,和靜態(tài) import 有本質(zhì)區(qū)別:

靜態(tài) import動(dòng)態(tài) import()
語(yǔ)法import X from './X'const X = await import('./X')
執(zhí)行時(shí)機(jī)編譯時(shí)加載,必須先解析運(yùn)行時(shí)按需加載
返回值直接拿到模塊綁定返回 Promise<Module>
位置只能在模塊頂層可以在任何地方調(diào)用
// 靜態(tài) import —— 同步解析,必須放在文件頂部
import MyComp from './MyComp.vue'

// 動(dòng)態(tài) import() —— 返回 Promise,可以按需調(diào)用
button.onclick = async () => {
  const module = await import('./HeavyLib.js')
  module.doSomething()
}

為什么動(dòng)態(tài) import() 能異步? 因?yàn)闉g覽器/打包器(如 Webpack、Vite)會(huì)將動(dòng)態(tài)導(dǎo)入的模塊單獨(dú)拆分成 chunk,運(yùn)行時(shí)通過(guò) Promise + <script> 標(biāo)簽動(dòng)態(tài)加載,不會(huì)阻塞當(dāng)前模塊的執(zhí)行。

2. Vue 的異步組件 —— 框架層封裝

Vue 利用動(dòng)態(tài) import 這個(gè)語(yǔ)言特性,在框架層面做了封裝:

// Vue 3 定義異步組件
import { defineAsyncComponent } from 'vue'

const AsyncComp = defineAsyncComponent(() => import('./HeavyComp.vue'))

// 或者直接在 components 中使用
export default {
  components: {
    AsyncComp: () => import('./HeavyComp.vue')  // 簡(jiǎn)寫(xiě)
  }
}

Vue 異步組件的工作原理:

  1. 組件注冊(cè)時(shí),Vue 發(fā)現(xiàn) defineAsyncComponent 或返回 Promise 的函數(shù),不會(huì)立即渲染
  2. 當(dāng)該組件真正需要渲染(進(jìn)入視口、條件渲染觸發(fā))時(shí),Vue 才調(diào)用工廠函數(shù)
  3. 工廠函數(shù)觸發(fā) import() → 網(wǎng)絡(luò)加載 chunk → 解析模塊
  4. 加載期間 Vue 顯示 loading 狀態(tài)(可選)
  5. Promise resolve 后,Vue 用拿到的組件定義替換占位,觸發(fā)重新渲染
用戶訪問(wèn)頁(yè)面
    │
    ▼
Vue 初始化,遇到 async component
    │
    ▼
先渲染 loading/suspense 占位  (不阻塞頁(yè)面)
    │
    ▼
組件需要渲染時(shí) → 觸發(fā) import()
    │
    ▼
網(wǎng)絡(luò)異步加載 chunk ── 同時(shí)頁(yè)面其他部分正常工作
    │
    ▼
chunk 下載完成 → Promise resolve
    │
    ▼
替換占位,渲染真實(shí)組件

3. 結(jié)合 webpack/Vite 的代碼分割

打包工具看到 import() 語(yǔ)法后會(huì)自動(dòng)做 Code Splitting

// webpack 魔法注釋(控制分包行為)
const About = () => import(/* webpackChunkName: "about" */ './About.vue')

// Vite 中直接使用即可,自動(dòng)分包
const About = () => import('./About.vue')

最終輸出:

dist/
  ├── index.html
  ├── assets/
  │   ├── index-abc123.js      ← 主包
  │   ├── about-def456.js      ← 異步 chunk,首次不加載
  │   └── ...

總結(jié)

Vue import 能異步加載的根本原因是:

  1. JavaScript import() 返回 Promise,這是 ECMAScript 標(biāo)準(zhǔn)的一部分
  2. 打包工具識(shí)別 import() 后自動(dòng)拆分代碼為獨(dú)立 chunk
  3. Vue 框架封裝了生命周期管理(loading/error/timeout/重試),讓異步組件對(duì)開(kāi)發(fā)者友好

三層合力實(shí)現(xiàn)了"按需加載、不阻塞首屏"的效果。

到此這篇關(guān)于Vue中import為什么可以異步加載的文章就介紹到這了,更多相關(guān)Vue import異步加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue?3?表單與后端數(shù)據(jù)交互之查詢并回顯數(shù)據(jù)步驟流程

    Vue?3?表單與后端數(shù)據(jù)交互之查詢并回顯數(shù)據(jù)步驟流程

    本文給大家介紹Vue3表單與后端數(shù)據(jù)交互之查詢并回顯數(shù)據(jù)步驟流程,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Vue項(xiàng)目路由刷新的實(shí)現(xiàn)代碼

    Vue項(xiàng)目路由刷新的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Vue項(xiàng)目路由刷新的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • 詳解lottie動(dòng)畫(huà)在vue中的應(yīng)用

    詳解lottie動(dòng)畫(huà)在vue中的應(yīng)用

    Lottie 是一個(gè)適用于 Android、iOS、Web 和 Windows 的庫(kù),它使用 Bodymovin 解析導(dǎo)出為 JSON 的 Adobe After Effects 動(dòng)畫(huà),下面我們就來(lái)看看它在vue中的是如何應(yīng)用的吧
    2023-12-12
  • Vue3如何處理重復(fù)渲染代碼的問(wèn)題

    Vue3如何處理重復(fù)渲染代碼的問(wèn)題

    這篇文章主要來(lái)和大家一起探討一下在Vue3項(xiàng)目中如何處理重復(fù)渲染代碼的問(wèn)題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Vue利用廣度優(yōu)先搜索實(shí)現(xiàn)watch

    Vue利用廣度優(yōu)先搜索實(shí)現(xiàn)watch

    這篇文章主要為大家學(xué)習(xí)介紹了Vue如何利用廣度優(yōu)先搜索實(shí)現(xiàn)watch(有意思),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • 詳解關(guān)于element級(jí)聯(lián)選擇器數(shù)據(jù)回顯問(wèn)題

    詳解關(guān)于element級(jí)聯(lián)選擇器數(shù)據(jù)回顯問(wèn)題

    這篇文章主要介紹了詳解關(guān)于element級(jí)聯(lián)選擇器數(shù)據(jù)回顯問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 在Vue中創(chuàng)建可重用的 Transition的方法

    在Vue中創(chuàng)建可重用的 Transition的方法

    這篇文章主要介紹了在Vue中創(chuàng)建可重用的 Transition,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 最新評(píng)論

    周宁县| 浦县| 峨山| 滦平县| 南乐县| 蓝山县| 贞丰县| 台中市| 交城县| 中超| 清徐县| 房产| 错那县| 延川县| 尼木县| 临夏县| 庄浪县| 申扎县| 讷河市| 汽车| 贵南县| 宁乡县| 凌源市| 茂名市| 巩义市| 日喀则市| 晴隆县| 高邑县| 姜堰市| 贵阳市| 长岭县| 长寿区| 武乡县| 汨罗市| 个旧市| 砀山县| 南安市| 阳江市| 聊城市| 英德市| 新化县|