目錄
1.模板化
2. 可配置
3.適應性
4.反轉性
5. 擴展
6. 巢狀
總結
首頁 web前端 js教程 詳解6個不同等級的組件可重複使用性概念

詳解6個不同等級的組件可重複使用性概念

Apr 25, 2021 am 11:27 AM
javascript vue 可重複使用性 組件

本篇文章給大家詳細介紹一下6個不同等級的元件可重複使用性概念。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

詳解6個不同等級的組件可重複使用性概念

我們所有人都希望寫更少的程式碼,同時也要做更多的事情。為了實現這一點,我們建立了元件,以便可以多次重複使用它們。

有些元件只需要基本的可重複使用性,而有些則需要更複雜的重構技術,我們才能充分重複使用它。

這裡有6個不同等級的可重用性概念,大家先來體會體會,後續更新會一個一個的講。

1.模板化

透過模板化,我們將一些重複性高的程式碼包裝在自己的元件中,而不是在周圍到處複製和貼上代碼。

當我們重複使用該元件(而不是直接使用程式碼)時,它為我們帶來了兩個好處:

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

  • 我們不必記住每個重複程式碼複被複製到了哪些地方

這是最基本的,也是最常被談論的可重用性形式。

2. 可配置

對於某些元件,我們需要根據需求對它們的工作方式進行修改,如:

# Button元件預設有一個主版本,也有一個帶有圖示版本。但我們沒有為每個版本建立全新的元件,而是指定 props 做到不同類型之間切換。

加入這些props通常不會為元件增加很大的複雜度,同時,又能為我們在使用元件方面帶來更多在的靈活性。

注意:這不同於使用prop來保存狀態或數據,例如loading prop 或disabled prop。

3.適應性

可配置的最大問題是缺乏遠見。我們需要預見將來的需求,並透過放置對應的 prop 將它們建構到組件中。

但是,如果你的元件具有足夠適應性,則無需更改元件即應對未來的需求。

為了讓我們的元件有足夠的適應性,我們可以使用 插槽 來實作。

例如,我們可以使用預設的插槽來取代在傳入Button元件的text

<!-- Button.vue -->
<template>
  <button
    class="btn btn--default"
    @click="$emit(&#39;click&#39;)"
  >
    <slot />
  </button>
</template>
登入後複製

現在我們不限於傳入的型別是string 還是number

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

<template>
  <Button>
    <img
      v-if="loading"
      src="spinner.svg"
    />
    Click Me
  </Button>
</template>
登入後複製

4.反轉性

除了透過插槽傳遞完整的標記區塊給我們的子元件,我們還可以傳遞一組有關如何渲染的指令。

這就像我們根據食譜來做菜,而不是叫外送。當我們遵循食譜時,需要做更多的工作,但是我們完全可以按自己的節奏來製製作, 我們可以隨時進行調整,也可以完全放棄不按食譜的流程來。

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

5. 擴展

透過適應性反轉性,我們擁有必要的一些技術基礎,這些技能可以最大限度地提高組件的可重複使用性。

下一步是將這些技術應用於整個元件,以便我們更輕鬆地擴展其行為。

我們使用命名插槽在元件中新增一個或多個擴充點。僅適應性反轉性本身為我們提供了擴展行為的一種選擇,而擁有多個擴展點則為我們提供了許多不同的選擇。

這裡,我們有一個Modal元件,其中包含headerdefaultfooter

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

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

    <slot name="footer">
      <Button @click="closeModal">
        Close
      </Button>
    </slot>
  </div>
</template>
登入後複製

這是一個相當簡單的擴充範例,其中我們已經有幾個擴充該元件的選項:

  • #只需覆寫default slot即可添加我們的內容

  • 可以透過插槽名稱來覆蓋header 的內容

  • 可以透過插槽名稱來覆蓋footer 的內容,其內容還是以不同風格按鈕為主

  • #headerfooter的插槽更多是用於自訂

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

6. 巢狀

擴充之上更高階重複使用性就是巢狀, 我們可以多個基本元件為基礎, 一層嵌套一層,一開始可能聽起來很瘋狂,但它非常有用,特別是在大中型應用程式中。

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

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

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

總結

以上是6個可重用性層級一些概述,當然很有可能會錯過一些內容,但基本上是可以為我們封裝元件提供了一個大致思路,也是很不錯的方式。

原文網址:https://news.knowledia.com/US/en/the-6-levels-of-reusability-7ad7fc58842eb67fc320c8e11305e1010a11f251?source=rss

##作者:Michael# Thiessen

譯文地址:https://segmentfault.com/a/1190000039699016

更多程式相關知識,請造訪:

程式設計教學! !

以上是詳解6個不同等級的組件可重複使用性概念的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

vue怎麼給按鈕添加函數 vue怎麼給按鈕添加函數 Apr 08, 2025 am 08:51 AM

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

vue中的watch怎麼用 vue中的watch怎麼用 Apr 07, 2025 pm 11:36 PM

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

vue多頁面開發是啥意思 vue多頁面開發是啥意思 Apr 07, 2025 pm 11:57 PM

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

vue.js怎麼引用js文件 vue.js怎麼引用js文件 Apr 07, 2025 pm 11:27 PM

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 &lt;script&gt; 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

vue返回上一頁的方法 vue返回上一頁的方法 Apr 07, 2025 pm 11:30 PM

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 &lt;router-link to=&quot;/&quot;&gt; 組件window.history.back(),方法選擇取決於場景。

vue遍歷怎麼用 vue遍歷怎麼用 Apr 07, 2025 pm 11:48 PM

Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。

vue的div怎麼跳轉 vue的div怎麼跳轉 Apr 08, 2025 am 09:18 AM

Vue 中 div 元素跳轉的方法有兩種:使用 Vue Router,添加 router-link 組件。添加 @click 事件監聽器,調用 this.$router.push() 方法跳轉。

See all articles