javascript - Ember.js中的視圖與組件




handlebars.js (2)

Ember.View

Ember.View目前僅限於由W3C為您創建的標籤。 但是,如果您想定義自己的特定於應用程序的HTML標籤,然後使用JavaScript實現其行為? 你不能用Ember.View來做到這Ember.View

Ember.Component

這正是組件允許你做的事情。 實際上,W3C目前正在開發自定義元素規範,這是一個好主意。

Ember的組件實現嘗試盡可能地接近Web組件規範。 一旦自定義元素在瀏覽器中廣泛使用,您應該能夠輕鬆地將您的Ember組件遷移到W3C標準,並讓它們可以被其他框架使用,並且已經採用了新標準。

這對我們非常重要,我們正在與標準組織密切合作,以確保我們的組件實現與Web平台的路線圖相匹配。

另外需要注意的是, Ember.Component實際上是一個Ember.View (一個子類),但它是完全孤立的 。 其模板中的屬性訪問轉到視圖對象,動作也針對視圖對象。 沒有對周圍context或外部controller訪問權限, 所有上下文信息都被傳入 ,而Ember.View並不是這種情況,而Ember.View確實可以訪問它的周圍控制器,例如在視圖內部,你可以做類似this.get('controller') ,它會給你當前與視圖關聯的控制器。

那麼視圖和組件之間的主要區別是什麼?

因此,除了組件之外的主要區別是您可以創建自己的標籤,並且在自定義元素可用時的某個時間點,也可以在支持自定義元素的其他框架中遷移/使用這些組件,實際上在某些時候,一個支持組件的組件將根據具體的實施情況而使視圖稍微過時。

什麼是我喜歡使用組件視圖的常見示例,反之亦然?

以上這些依賴於你的用例。 但作為一個經驗法則,如果您需要在您的視圖中訪問其周圍的控制器等,請使用Ember.View ,但是如果您想要隔離視圖並僅傳遞其需要的信息,使其與上下文無關和更多的可重用,使用Ember.Component

希望能幫助到你。

更新

隨著Road to Ember 2.0的發布,您現在被鼓勵在大多數情況下使用組件而不是視圖。

我正在學習ember.js,我試圖理解視圖和組件之間的區別。 我認為這是製造可重用組件的一種方式。

從Ember的網站上查看:

Ember.js中的視圖通常僅由於以下原因而創建:
- 當你需要復雜的用戶事件處理
- 當你想創建一個可重用的組件

從Ember的組件網站:

組件是一個自定義HTML標記,您的行為使用JavaScript實現,其外觀使用Handlebars模板描述。 它們允許您創建可以簡化應用程序模板的可重用控件

那麼視圖和組件之間的主要區別是什麼? 什麼是我喜歡使用組件視圖的常見示例,反之亦然?


現在看來 - v2.x是當前的穩定版本 - 視圖已被完全棄用。 據說從Ember 2.0 API中刪除了視圖

因此,在Ember 2.0中使用{{view}}關鍵字會觸發一個斷言:

聲明失敗:在Ember 2.0中刪除了使用{{view}}或其基於它的任何路徑

如果您必須在Ember 2.0中使用視圖,則可以使用ember-legacy-views插件,該插件將與Ember兼容,直到版本2.4

因此,總結 - 組件是現在(視圖被刪除)和未來 - 他們也將取代控制器。 請參閱可路由組件RFC