欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

基本用法?

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

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

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

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

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

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

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

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

你也可以在局部注冊組件時使用defineAsyncComponent

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

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

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

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

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

如果提供了一個報錯組件,則它會在加載器函數(shù)返回的 Promise 拋錯時被渲染。你還可以指定一個超時時間,在請求耗時超過指定時間時也會渲染報錯組件。

搭配 Suspense 使用?

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

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

相關(guān)文章

  • vuex?store?緩存存儲原理分析

    vuex?store?緩存存儲原理分析

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

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

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

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

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

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

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

    如何刪除vue項目下的node_modules文件夾

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

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

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

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

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

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

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

    vue項目前端知識點整理【收藏】

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

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

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

最新評論