組成概觀

組成是一種管理複雜性並將程式碼組織成可重複使用片段的策略。Lit 提供了幾種組成和程式碼重複使用選項

  • 元件組成。
  • 響應式控制器。
  • 類別混入。

元件組成是從較簡單的元件組裝複雜元件的過程。元件可以在其樣板中使用子元件。元件可以使用標準 DOM 機制進行通訊:設定子元件的屬性,並監聽來自子元件的事件。

儘管元件組成是將複雜的 Lit 專案分解為較小單位的預設方式,但還有另外兩種值得注意的程式碼模式可用於分解 Lit 程式碼

響應式控制器是可以掛接到 Lit 元件更新生命週期中的物件,將與功能相關的狀態和行為封裝到單獨的程式碼單元中。

類別混入可讓您撰寫可重複使用的部分元件定義,並將它們「混入」到元件的繼承鏈中。

混入和響應式控制器都可讓您將與給定功能相關的元件邏輯分解為可重複使用的單元。有關控制器和混入的比較,請參閱下一節。

控制器和類別混入在某些方面非常相似。它們都可以掛接到主機元件的生命週期、維護狀態和觸發主機更新。

控制器和混入之間的主要區別在於它們與元件的關係。元件與響應式控制器具有「擁有」關係,因為它擁有該控制器。元件與混入具有「屬於」關係,因為該元件是混入類別的實例。

響應式控制器是元件擁有的單獨物件。控制器可以存取元件上的方法和欄位,而元件可以存取控制器上的方法和欄位。但是,除非元件向其公開 API,否則使用該元件的人員無法(輕易)存取控制器。控制器的生命週期方法會在元件上對應的生命週期方法之前呼叫。

另一方面,混入會成為元件原型鏈的一部分。混入定義的任何公共欄位或方法都是元件 API 的一部分。而且由於混入是原型鏈的一部分,因此您的元件可以控制何時呼叫混入的生命週期回呼。

一般而言,如果您正在嘗試決定是否將功能封裝為控制器或混入,您應該選擇控制器,除非該功能需要以下其中之一

  • 將公共 API 新增至元件。
  • 對元件生命週期的非常精細的存取。