国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue 的異步組件

這篇具有很好參考價(jià)值的文章主要介紹了Vue 的異步組件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1,異步組件介紹

在項(xiàng)目中,有的組件僅在需要時(shí)才會加載,這時(shí)就需要用到異步組件。

異步組件本質(zhì)上是一個函數(shù),該函數(shù)調(diào)用后返回一個Promise,Promise 成功的結(jié)果是一個組件對象。一般使用 import() 動態(tài)導(dǎo)入組件作為這個 Promise。

// 函數(shù)需要返回一個 Promise
const AsyncComponent = () => {
  return new Promise((resolve) => {
    setTimeout(async () => {
      const MyComp = await import("./MyComp.vue");
      resolve(MyComp);
    }, 3000);
  });
};

2,組件中使用

異步組件也可以在組件中使用,比如某些場景下需要獲取數(shù)據(jù)后才能加載某組件。

2.1,Vue2 語法

Vue2官網(wǎng)參考

<script>
// 返回Promise
const AsyncComponent = () => {
  return new Promise((resolve) => {
    setTimeout(async () => {
      const MyComp = await import("./MyComp.vue");
      resolve(MyComp);
    }, 3000);
  });
};

// 返回Promise
const AsyncComponent2 = () => import("./MyComp.vue")

export default {
  components: {
    // Vue會調(diào)用該函數(shù),并等待 Promise完成,完成之前該組件位置什么也不渲染
    AsyncComponent,
  },
};
</script>

函數(shù)也可以返回有一個配置對象,并處理加載狀態(tài)。

const AsyncComponent = () => ({
  // 需要加載的組件 (應(yīng)該是一個 `Promise` 對象)
  component: import('./MyComponent.vue'),
  // 異步組件加載時(shí)使用的組件
  loading: LoadingComponent,
  // 加載失敗時(shí)使用的組件
  error: ErrorComponent,
  // 展示加載時(shí)組件的延時(shí)時(shí)間。默認(rèn)值是 200 (毫秒)
  delay: 200,
  // 如果提供了超時(shí)時(shí)間且組件加載也超時(shí)了,
  // 則使用加載失敗時(shí)使用的組件。默認(rèn)值是:`Infinity`
  timeout: 3000
})

2.2,Vue3 語法

Vue3官網(wǎng)參考

需要使用 defineAsyncComponent 方法來實(shí)現(xiàn),函數(shù)同樣需要返回一個 Promise。

<script setup>
import { defineAsyncComponent } from 'vue'

const AsyncComp = defineAsyncComponent(() => {
  return new Promise((resolve, reject) => {
    setTimeout(async () => {
      const MyComp = await import("./MyComp.vue");
      resolve(MyComp);
    }, 3000);
  })
})

const AsyncComp2 = defineAsyncComponent(() =>
  import('./components/MyComponent.vue')
)
</script>

也可以全局注冊

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

也能處理加載狀態(tài)

const AsyncComp = defineAsyncComponent({
  // 加載函數(shù)
  loader: () => import('./MyComponent.vue'),

  // 加載異步組件時(shí)使用的組件
  loadingComponent: LoadingComponent,
  // 展示加載組件前的延遲時(shí)間,默認(rèn)為 200ms
  delay: 200,

  // 加載失敗后展示的組件
  errorComponent: ErrorComponent,
  // 如果提供了一個 timeout 時(shí)間限制,并超時(shí)了
  // 也會顯示這里配置的報(bào)錯組件,默認(rèn)值是:Infinity
  timeout: 3000
})

3,路由中使用

路由懶加載

{
  name: "Home",
  path: "/",
  // webpackChunkName 用于分包
  component: () => import(/* webpackChunkName: "home" */ "@/views/Home"),
  meta: { title: "首頁" },
}

Vue Router 只會在第一次進(jìn)入這個頁面時(shí)調(diào)用這個函數(shù),然后使用緩存數(shù)據(jù)。也就是說,已經(jīng)加載過的組件不會重新加載。

3.1,vue3語法

封裝實(shí)現(xiàn)異步頁面。

// utils/index.js
import { defineAsyncComponent } from "vue";
import Loading from "../components/Loading.vue";
import "nprogress/nprogress.css";
import NProgress from "nprogress";
NProgress.configure({
  trickleSpeed: 50,
  showSpinner: false,
});

function getAsyncPage(path) {
  return defineAsyncComponent({
    loader: async () => {
      NProgress.start();
      await delay();
      const comp = await import(path);
      NProgress.done();
      return comp;
    },
    loadingComponent: Loading, // 當(dāng)promise在pending狀態(tài)時(shí),將顯示這里的組件
  });
}
import { getAsyncPage } from "../util";

const Home = getAsyncPage("../views/Home.vue");
const About = getAsyncPage("../views/About.vue");

export default [
  { path: "/", component: Home },
  { path: "/about", component: About },
];

以上。文章來源地址http://www.zghlxwxcb.cn/news/detail-740359.html

到了這里,關(guān)于Vue 的異步組件的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue3中實(shí)現(xiàn)異步組件

    vue3中實(shí)現(xiàn)異步組件

    使用場景一:當(dāng)組件進(jìn)入視窗時(shí)再進(jìn)行加載 假設(shè)頁面中有三個組件A、B、C C組件中有一張圖片 打開頁面: ? 如果一個頁面中的內(nèi)容非常多,用戶再首次打開時(shí)并沒有瀏覽到下方的內(nèi)容,但頁面必須加載完下方的內(nèi)容才會顯示,這無疑非常影響性能 接下來我們做一些調(diào)整 創(chuàng)建

    2024年02月06日
    瀏覽(25)
  • vue3到vue2組件重構(gòu)方法筆記

    vue3到vue2組件重構(gòu)方法筆記

    這兩天的任務(wù)是把一批做好的vue3組件放在vue2項(xiàng)目中使用,將組合式api分散開有一些零散的技巧,所以寫一篇轉(zhuǎn)化筆記以供大家參考 先上vue3一個組件的示例代碼 上面是其中一個vue3組件樣式表,在vue3的項(xiàng)目中展示效果為下圖所示: 組件中還有一些其他的功能都要完整保留,

    2024年02月07日
    瀏覽(18)
  • vue父子組件之間雙向數(shù)據(jù)綁定的(vue2/vue3)

    vue父子組件之間雙向數(shù)據(jù)綁定的四種方法(vue2/vue3) vue考慮到組件的可維護(hù)性,是不允許子組件改變父組件傳的props值的。父組件通過綁定屬性的方式向子組件傳值,而在子組件中可以通過$emit向父組件通信(第一種方式),通過這種間接的方式改變父組件的data,從而實(shí)現(xiàn)子組

    2024年02月08日
    瀏覽(89)
  • 一文搞懂 vue2 與 vue3 函數(shù)式組件

    一文搞懂 vue2 與 vue3 函數(shù)式組件

    目錄 vue2函數(shù)式組件 h函數(shù) h函數(shù)有那些參數(shù)配置 在h函數(shù)中如何使用條件判斷及循環(huán)語句? 事件? 函數(shù)式組件 ?slots() 和 children 對比 簡單的例子 業(yè)務(wù)場景下的函數(shù)式組件 vue3函數(shù)式組件 h函數(shù) 基本使用 v-on? 組件 渲染插槽? resolveComponent() 函數(shù)式組件 案例一 案例二 總結(jié) 概覽

    2024年02月07日
    瀏覽(18)
  • vue2和vue3 子組件父組件之間的傳值方法

    在組件化開發(fā)的過程中難免會遇見 子組件和父組件之間的通訊那么這里講關(guān)于vue2和vue3不同的通訊方式 先看一下vue2 父組件向子組件傳遞參數(shù) 父組件通過 : 語法 其實(shí)就是v-bind 來傳遞參數(shù) 子組件通過 props 來獲取父組件傳遞的方法 億點(diǎn)小知識:子組件接收到數(shù)據(jù)之后,不能直接

    2024年02月09日
    瀏覽(23)
  • 【前端面經(jīng)】Vue3和Vue2的區(qū)別

    Vue是一種非常流行的JavaScript框架,因其易用性和靈活性在開發(fā)人員中備受歡迎。Vue2是Vue框架的上一個重要版本,于2016年發(fā)布。但是,Vue3是最新版本的Vue框架,于2020年正式發(fā)布并帶來了一些重大變化。本文將探討Vue3和Vue2之間的主要區(qū)別。 Vue3的一個顯著優(yōu)勢是其更小的代碼

    2024年02月02日
    瀏覽(18)
  • Vue.js 中的異步組件是什么?如何使用異步組件?

    在 Vue.js 中,異步組件是一種延遲加載組件的方式,可以大大提高應(yīng)用程序的性能和加載速度。本文將介紹 Vue.js 中異步組件的概念、優(yōu)勢以及如何使用異步組件。 在傳統(tǒng)的 Vue.js 開發(fā)中,組件是在應(yīng)用程序啟動時(shí)就立即加載的。這種方式雖然簡單,但是會導(dǎo)致應(yīng)用程序的初始

    2024年02月12日
    瀏覽(35)
  • vue2升級為vue3 vuedraggable 拖動組件報(bào)錯

    升級組件 npm i -S vuedraggable@next 使用示例 2、Item slot must have only one child 官方GitHub - SortableJS/vue.draggable.next: Vue 3 compatible drag-and-drop component based on Sortable.js ?官方demo https://sortablejs.github.io/vue.draggable.next/#/two-lists

    2024年02月16日
    瀏覽(23)
  • VUE3+vite項(xiàng)目中動態(tài)引入組件和異步組件

    1. 把項(xiàng)目中所有vue文件注冊成異步組件。 2. 獲取組件 在setup函數(shù)獲取組件 3. 參考如下 Glob 導(dǎo)入 Vite 支持使用特殊的 import.meta.glob 函數(shù)從文件系統(tǒng)導(dǎo)入多個模塊: 以上將會被轉(zhuǎn)譯為下面的樣子: 你可以遍歷 modules 對象的 key 值來訪問相應(yīng)的模塊: 匹配到的文件默認(rèn)是懶加載的

    2024年02月10日
    瀏覽(34)
  • 從Vue2到Vue3, 一鍵升級前端開發(fā)技能

    本文的目的,是為了讓已經(jīng)有 Vue2 開發(fā)經(jīng)驗(yàn)的 ? 人 ? ,快速掌握 Vue3 的寫法。 因此, ? 本篇假定你已經(jīng)掌握 Vue 的核心內(nèi)容 ? ,只為你介紹編寫 Vue3 代碼,需要了解的內(nèi)容。 首先,Vue3 新增了一個叫做組合式 api 的東西,英文名叫 Composition API 。因此 Vue3 的? script ?現(xiàn)在支

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包