亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于Vue的異步組件

 更新時(shí)間:2023年04月21日 11:21:03   作者:自xing且樂(lè)觀~  
在大型項(xiàng)目中,我們可能需要拆分應(yīng)用為更小的塊,并僅在需要時(shí)再?gòu)姆?wù)器加載相關(guān)組件。Vue 提供了defineAsyncComponent 方法來(lái)實(shí)現(xiàn)此功能,需要的朋友可以參考下

基本用法?

在大型項(xiàng)目中,我們可能需要拆分應(yīng)用為更小的塊,并僅在需要時(shí)再?gòu)姆?wù)器加載相關(guān)組件。Vue 提供了defineAsyncComponent方法來(lái)實(shí)現(xiàn)此功能:

import { defineAsyncComponent } from 'vue'
 
const AsyncComp = defineAsyncComponent(() => {
  return new Promise((resolve, reject) => {
    // ...從服務(wù)器獲取組件
    resolve(/* 獲取到的組件 */)
  })
})
// ... 像使用其他一般組件一樣使用 `AsyncComp`

如你所見(jiàn),defineAsyncComponent方法接收一個(gè)返回 Promise 的加載函數(shù)。這個(gè) Promise 的resolve回調(diào)方法應(yīng)該在從服務(wù)器獲得組件定義時(shí)調(diào)用。你也可以調(diào)用reject(reason)表明加載失敗。

ES 模塊動(dòng)態(tài)導(dǎo)入也會(huì)返回一個(gè) Promise,所以多數(shù)情況下我們會(huì)將它和defineAsyncComponent搭配使用。類似 Vite 和 Webpack 這樣的構(gòu)建工具也支持此語(yǔ)法 (并且會(huì)將它們作為打包時(shí)的代碼分割點(diǎn)),因此我們也可以用它來(lái)導(dǎo)入 Vue 單文件組件:

import { defineAsyncComponent } from 'vue'
 
const AsyncComp = defineAsyncComponent(() =>
  import('./components/MyComponent.vue')
)

最后得到的AsyncComp是一個(gè)外層包裝過(guò)的組件,僅在頁(yè)面需要它渲染時(shí)才會(huì)調(diào)用加載內(nèi)部實(shí)際組件的函數(shù)。它會(huì)將接收到的 props 和插槽傳給內(nèi)部組件,所以你可以使用這個(gè)異步的包裝組件無(wú)縫地替換原始組件,同時(shí)實(shí)現(xiàn)延遲加載。

與普通組件一樣,異步組件可以使用app.component()全局注冊(cè):

app.component('MyComponent', defineAsyncComponent(() =>
  import('./components/MyComponent.vue')
))

你也可以在局部注冊(cè)組件時(shí)使用defineAsyncComponent

<script>
import { defineAsyncComponent } from 'vue'
 
export default {
  components: {
    AdminPage: defineAsyncComponent(() =>
      import('./components/AdminPageComponent.vue')
    )
  }
}
</script>
 
<template>
  <AdminPage />
</template>

加載與錯(cuò)誤狀態(tài)?

異步操作不可避免地會(huì)涉及到加載和錯(cuò)誤狀態(tài),因此defineAsyncComponent()也支持在高級(jí)選項(xiàng)中處理這些狀態(tài):

const AsyncComp = defineAsyncComponent({
  // 加載函數(shù)
  loader: () => import('./Foo.vue'),
 
  // 加載異步組件時(shí)使用的組件
  loadingComponent: LoadingComponent,
  // 展示加載組件前的延遲時(shí)間,默認(rèn)為 200ms
  delay: 200,
 
  // 加載失敗后展示的組件
  errorComponent: ErrorComponent,
  // 如果提供了一個(gè) timeout 時(shí)間限制,并超時(shí)了
  // 也會(huì)顯示這里配置的報(bào)錯(cuò)組件,默認(rèn)值是:Infinity
  timeout: 3000
})

如果提供了一個(gè)加載組件,它將在內(nèi)部組件加載時(shí)先行顯示。在加載組件顯示之前有一個(gè)默認(rèn)的 200ms 延遲——這是因?yàn)樵诰W(wǎng)絡(luò)狀況較好時(shí),加載完成得很快,加載組件和最終組件之間的替換太快可能產(chǎn)生閃爍,反而影響用戶感受。

如果提供了一個(gè)報(bào)錯(cuò)組件,則它會(huì)在加載器函數(shù)返回的 Promise 拋錯(cuò)時(shí)被渲染。你還可以指定一個(gè)超時(shí)時(shí)間,在請(qǐng)求耗時(shí)超過(guò)指定時(shí)間時(shí)也會(huì)渲染報(bào)錯(cuò)組件。

搭配 Suspense 使用?

異步組件可以搭配內(nèi)置的<Suspense>組件一起使用。

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

相關(guān)文章

  • vuex?store?緩存存儲(chǔ)原理分析

    vuex?store?緩存存儲(chǔ)原理分析

    這篇文章主要介紹了vuex?store?緩存存儲(chǔ)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue狀態(tài)管理庫(kù)Pinia詳細(xì)介紹

    Vue狀態(tài)管理庫(kù)Pinia詳細(xì)介紹

    這篇文章主要介紹了Vue3-pinia狀態(tài)管理,pinia是 vue3 新的狀態(tài)管理工具,簡(jiǎn)單來(lái)說(shuō)相當(dāng)于之前 vuex,它去掉了 Mutations 但是也是支持 vue2 的,需要的朋友可以參考下
    2022-08-08
  • Vue.$set 失效的坑 問(wèn)題發(fā)現(xiàn)及解決方案

    Vue.$set 失效的坑 問(wèn)題發(fā)現(xiàn)及解決方案

    這篇文章主要介紹了Vue.$set 失效的坑 問(wèn)題發(fā)現(xiàn)及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • vue實(shí)現(xiàn)的網(wǎng)易云音樂(lè)在線播放和下載功能案例

    vue實(shí)現(xiàn)的網(wǎng)易云音樂(lè)在線播放和下載功能案例

    這篇文章主要介紹了vue實(shí)現(xiàn)的網(wǎng)易云音樂(lè)在線播放和下載功能,結(jié)合具體實(shí)例形式分析了網(wǎng)易云音樂(lè)相關(guān)接口調(diào)用與操作技巧,需要的朋友可以參考下
    2019-02-02
  • 如何刪除vue項(xiàng)目下的node_modules文件夾

    如何刪除vue項(xiàng)目下的node_modules文件夾

    這篇文章主要介紹了如何刪除vue項(xiàng)目下的node_modules文件夾,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳解Vue的組件中data選項(xiàng)為什么必須是函數(shù)

    詳解Vue的組件中data選項(xiàng)為什么必須是函數(shù)

    這篇文章主要給大家介紹了關(guān)于Vue的組件中data選項(xiàng)為什么必須是函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 深入聊一聊虛擬DOM與diff算法

    深入聊一聊虛擬DOM與diff算法

    為什么vue等的這些mvvm框架比傳統(tǒng)的操作dom渲染頁(yè)面要快,下面這篇文章主要給大家介紹了關(guān)于虛擬DOM與diff算法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 解決Element-ui radio單選框label布爾/數(shù)值的一個(gè)坑

    解決Element-ui radio單選框label布爾/數(shù)值的一個(gè)坑

    這篇文章主要介紹了解決Element-ui radio單選框label布爾/數(shù)值的一個(gè)坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue項(xiàng)目前端知識(shí)點(diǎn)整理【收藏】

    vue項(xiàng)目前端知識(shí)點(diǎn)整理【收藏】

    本文是小編給大家收藏整理的關(guān)于vue項(xiàng)目前端知識(shí)點(diǎn),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • VUE實(shí)現(xiàn)吸底按鈕

    VUE實(shí)現(xiàn)吸底按鈕

    這篇文章主要為大家詳細(xì)介紹了VUE實(shí)現(xiàn)吸底按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03

最新評(píng)論