我剛開始使用Angular 2,並想知道爲什麼selector
和template
等一些屬性放在組件裝飾器中,而不是放在組件類中。爲什麼Angular 2使用裝飾器?
在Angular 2中使用所有這些裝飾器有什麼意義?
我剛開始使用Angular 2,並想知道爲什麼selector
和template
等一些屬性放在組件裝飾器中,而不是放在組件類中。爲什麼Angular 2使用裝飾器?
在Angular 2中使用所有這些裝飾器有什麼意義?
爲了方便爲工具,以提供各種支持,像模板:
從裝飾器生成代碼允許:
代碼將需要執行使用結果表達式可能發出。裝飾器可以很容易靜態評估,而不需要執行TypeScript代碼(除了可能是一個簡單的和有限的子集)。
通常,裝飾器允許您執行功能。例如,@Component
執行從Angular2導入的Component
函數。在引擎蓋下,這樣的裝飾器在類上定義了一些元數據。這使您可以配置該類以將其「標記」爲組件。然後Angular2能夠將模板中的選擇器鏈接到這樣的類。
本文可以給大家介紹一下引擎蓋下會發生什麼更多的提示:
你可以注意到,裝飾可以爲不同級別(類,類屬性,方法打字稿申請參數)。
除了已經存在的特定於平臺的答案外,我還希望從更通用的角度切入。這個問題,從我的觀點,以某種方式涉及到了繼承權(如@Component
VS extends Component
)
選擇裝飾圖案的一些裝飾用的好處的決定是:
1.關注點分離:
裝飾器中的信息是聲明式的,它們定義了類的行爲,很可能不會隨着時間而改變,並被框架使用。類屬性和字段是特定於類的數據,將始終處理並經常更新,並且只在類本身內有意義。這兩種數據不應該混合在一起。
2。支持多種修改
由於Diamond problem,許多語言防止多繼承。另一方面,一個班級可以有多個用於不同目的的裝飾器(例如@Component
和已棄用的@RouteConfig
)
我真的不買第二個參數。在Angular2中使用裝飾器緩解多重繼承問題?是的,裝飾器很適合用元數據標記類。但他們已經像使用類/類型聲明一樣使用了em。組件類/類型始終用\ @Component打扮。模塊總是使用\ @NMModule,並且將\ @Component放在除了什麼是邏輯組件類之外的東西上是沒有意義的。恕我直言,這是一個可疑的設計決定。並不是說沒有優勢 - 與任何東西一樣。 – spinkus
「通常,裝飾器允許您執行功能」。這不是很有幫助。編程語言讓你「執行功能」... – spinkus