溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vue中組件可重用性概念的示例分析

發(fā)布時間:2021-04-25 11:42:47 來源:億速云 閱讀:293 作者:小新 欄目:web開發(fā)

這篇文章主要介紹vue中組件可重用性概念的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

為什么要使用Vue

Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以創(chuàng)建可維護性和可測試性更強的代碼庫,Vue允許可以將一個網(wǎng)頁分割成可復(fù)用的組件,每個組件都包含屬于自己的HTML、CSS、JavaScript,以用來渲染網(wǎng)頁中相應(yīng)的地方,所以越來越多的前端開發(fā)者使用vue。

1.模板化

通過模板化,我們將一些重復(fù)性高的代碼包裝在其自己的組件中,而不是在周圍到處復(fù)制和粘貼代碼。

當(dāng)我們重用該組件(而不是直接使用代碼)時,它為我們帶來了兩個好處:

  • 將來進行更改就會容易得多,因為我們只需要在一個地方更改

  • 我們不必記住每個重復(fù)代碼復(fù)被復(fù)制到了哪些地方

這是最基本的,也是最經(jīng)常談?wù)摰目芍赜眯孕问健?/p>

2. 可配置

對于某些組件,我們需要根據(jù)需求對它們的工作方式進行修改,如:

Button組件默認有一個主版本,也有一個帶有圖標(biāo)版本。但我們沒有為每個版本創(chuàng)建全新的組件,而是指定 props 做到不同類型之間切換。

添加這些props通常不會給組件增加很大的復(fù)雜度,同時,又能給我們在使用組件方面帶來更多在的靈活性。

注意:這不同于使用prop來保存狀態(tài)或數(shù)據(jù),比如loading prop 或disabled prop。

3.適應(yīng)性

可配置的最大問題是缺乏遠見。 我們需要預(yù)見將來的需求,并通過放置對應(yīng)的 prop 將它們構(gòu)建到組件中。

但是,如果你的組件具有足夠適應(yīng)性,則無需更改組件即應(yīng)對未來的需求。

為了讓我們的組件具有足夠的適應(yīng)性,我們可以使用 插槽 來實現(xiàn)。

例如,我們可以使用默認的插槽來代替在傳入Button組件的 text

<!-- Button.vue -->
<template>
  <button
    class="btn btn--default"
    @click="$emit('click')"
  >
    <slot />
  </button>
</template>

現(xiàn)在我們不局限于傳入的類型是 string 還是 number。

如果我們想在不修改 Button 組件的情況下添加loading ,我們可以這樣做:

<template>
  <Button>
    <img
      v-if="loading"
      src="spinner.svg"
    />
    Click Me
  </Button>
</template>

4.反轉(zhuǎn)性

除了通過插槽傳遞完整的標(biāo)記塊給我們的子組件,我們還可以傳遞一組有關(guān)如何渲染的指令。

這就像我們根據(jù)食譜來做菜,而不是叫外賣。 當(dāng)我們遵循食譜時,需要做更多的工作,但是我們完全可以按自己的節(jié)奏來制制作, 我們可以隨時進行調(diào)整,也可以完全放棄不按食譜的流程來。

我們使用作用域插槽來為我們的組件增加更大的靈活性。

5. 擴展

通過適應(yīng)性反轉(zhuǎn)性,我們擁有必要的一些技術(shù)基礎(chǔ),這些技能可以最大限度地提高組件的可重用性。

下一步是將這些技術(shù)應(yīng)用于整個組件,以便我們更輕松地擴展其行為。

我們使用命名插槽在組件中添加一個或多個擴展點。 僅適應(yīng)性反轉(zhuǎn)性本身給我們提供了擴展行為的一種選擇,而擁有多個擴展點則為我們提供了許多不同的選擇。

這里,我們有一個Modal組件,其中包含header,defaultfooter

<template>
  <div class="modal">
    <slot name="header">
      <h3>{{ title }}</h3>
    </slot>

    <!-- Default slot for main content -->
    <slot />

    <slot name="footer">
      <Button @click="closeModal">
        Close
      </Button>
    </slot>
  </div>
</template>

這是一個相當(dāng)簡單的擴展示例,其中我們已經(jīng)有幾個擴展該組件的選項:

  • 只需覆蓋default slot即可添加我們的內(nèi)容

  • 可以通過插槽名來覆蓋 header 的內(nèi)容

  • 可以通過插槽名來覆蓋 footer 的內(nèi)容,其內(nèi)容還是以不同風(fēng)格按鈕為主

  • headerfooter的插槽更多是用于自定義

你不必擴展此組件的行為,但也可以擴展其一部分。 無論哪種方式,我們都能獲得很大的靈活性和大量的代碼重用性。

6. 嵌套

擴展之上更高級重用性就是嵌套, 我們可以多個基本組件為基礎(chǔ), 一層嵌套一層,一開始可能聽起來很瘋狂,但它非常有用,特別是在大中型應(yīng)用程序中。

我們從一個通過基礎(chǔ)組件開始,該組件的功能相當(dāng)普遍。 下一個組件就更加具體,以幾種方式擴展了基礎(chǔ)組件。 然后不斷以前面基礎(chǔ)組件為底往上擴展,直到我們擁有完成實際工作的最終組件。

這類似我們從非常普通的動物(Animal )到更特定的哺乳動物(Mammal ),然后是狗(Dog ),最后止于貴賓犬(Poodle)的方式。 如果我們需要的只是貴賓犬(Poodle)組件,看上去,我們整這么基礎(chǔ)組件就是浪費時間。但是在大型應(yīng)用程序中就不一樣了,我們需要在相同的基本概念上進行多次更改,來滿足不同的個性化需求,這時這種以基礎(chǔ)組件嵌套的思想就很重要。

我們可以擴展犬類(Dog)組件來獲得柯基犬(Corgi )比格犬(Beagle)組件。或者擴展哺乳動物(Mammal )組件以獲得貓(Cat )組件,這樣就可以添加老虎(Tiger)獅子(Lion)組件。

以上是“vue中組件可重用性概念的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI