Un Ember.View è attualmente limitato ai tag creati per te dal W3C. Ma se volessi definire i tuoi tag HTML specifici dell'applicazione e quindi implementare il loro comportamento usando JavaScript? In realtà non puoi farlo con un Ember.View .
Questo è esattamente ciò che i componenti ti consentono di fare. In realtà, è come una buona idea che il W3C sta attualmente lavorando sulla elementi personalizzati spec.
L'implementazione dei componenti di Ember cerca di essere il più vicino possibile alle specifiche dei componenti Web. Una volta che gli elementi personalizzati sono ampiamente disponibili nei browser, dovresti essere in grado di migrare facilmente i tuoi componenti Ember allo standard W3C e renderli utilizzabili anche da altri framework che hanno adottato il nuovo standard.
Questo è così importante per noi che stiamo lavorando a stretto contatto con gli enti normativi per garantire che la nostra implementazione dei componenti corrisponda alla tabella di marcia della piattaforma web.
È anche importante notare che un Ember.Component è in realtà un Ember.View (una sottoclasse) ma che è completamente isolato . L'accesso alla proprietà nei suoi modelli va all'oggetto vista e le azioni sono mirate anche all'oggetto vista . Non è possibile accedere alle informazioni circostanti context
o esterne a controller
tutte le informazioni contestuali trasmesse , il che non è il caso di un Ember.View che ha effettivamente accesso al controller circostante, ad esempio all'interno di una vista si potrebbe fare qualcosa di simile this.get('controller')
che ti darebbe il controller attualmente associato alla vista.
Qual è la differenza principale tra una vista e un componente?
Quindi, la differenza principale oltre a quella dei componenti consente di creare i propri tag e in un certo momento in futuro, quando saranno disponibili elementi personalizzati, migrare / utilizzare quei componenti in altri framework che supporteranno gli elementi personalizzati, è che a un certo punto un componente di brace renderà una visione un po 'obsoleta a seconda del caso specifico di implementazione.
E quale sarebbe un esempio comune in cui preferirei utilizzare una vista su un componente e viceversa?
Seguendo quanto sopra ciò dipende chiaramente dai casi d'uso. Ma come regola generale, se hai bisogno nella tua vista di accedere al controller circostante ecc. Usa un Ember.View , ma se vuoi isolare la vista e passare solo le informazioni di cui ha bisogno per renderlo indipendente dal contesto e molto più riutilizzabile, usa un componente Ember.Component .
Spero che sia d'aiuto.
Aggiornare
Con la pubblicazione di Road to Ember 2.0 , ora sei incoraggiato a utilizzare i componenti anziché le visualizzazioni nella maggior parte dei casi.