Sebuah Ember.View saat ini terbatas untuk tag yang dibuat untuk Anda oleh W3C. Tetapi jika Anda ingin mendefinisikan tag HTML khusus aplikasi Anda sendiri dan kemudian menerapkan perilakunya menggunakan JavaScript? Anda tidak dapat melakukan ini dengan Ember.View .
Itulah komponen yang memungkinkan Anda melakukannya. Bahkan, itu ide yang bagus bahwa W3C saat ini sedang mengerjakan spec Elemen Kustom .
Implementasi komponen Ember berusaha sedekat mungkin dengan spesifikasi Komponen Web. Setelah Elemen Kustom tersedia secara luas di browser, Anda harus dapat dengan mudah melakukan migrasi komponen Ember Anda ke standar W3C dan membuatnya dapat digunakan oleh kerangka kerja lain yang juga telah mengadopsi standar baru.
Ini sangat penting bagi kami sehingga kami bekerja sama dengan badan-badan standar untuk memastikan implementasi komponen kami sesuai dengan peta jalan platform web.
Juga penting untuk dicatat adalah bahwa Ember.Component sebenarnya adalah Ember.View (subclass) tetapi itu benar - benar terisolasi . Akses properti di templatnya pergi ke objek tampilan dan tindakan ditargetkan juga pada objek tampilan . Tidak ada akses ke sekitarnya context
atau di luar controller
semua informasi kontekstual dilewatkan , yang tidak terjadi dengan Ember. Lihat yang memang memiliki akses ke pengontrol sekitarnya, misalnya di dalam tampilan Anda bisa melakukan sesuatu seperti this.get('controller')
yang akan memberi Anda controller saat ini terkait dengan tampilan.
Jadi apa perbedaan utama antara tampilan dan komponen?
Jadi, perbedaan utama selain komponen yang memungkinkan Anda membuat tag Anda sendiri dan di beberapa titik di masa depan ketika Elemen Kustom tersedia juga memigrasikan / menggunakan komponen-komponen itu dalam kerangka kerja lain yang akan mendukung elemen kustom, adalah bahwa pada titik tertentu komponen bara akan membuat tampilan agak usang tergantung pada kasus implementasi spesifik.
Dan apa yang akan menjadi contoh umum di mana saya lebih suka menggunakan tampilan atas komponen dan sebaliknya?
Mengikuti hal di atas ini sangat tergantung pada kasus penggunaan Anda. Tetapi sebagai patokan, jika Anda memerlukan akses pada pengontrol sekitarnya, dll. Gunakan Ember.View , tetapi jika Anda ingin mengisolasi tampilan dan hanya menyampaikan informasi yang diperlukan untuk membuatnya konteks-agnostik dan jauh lebih dapat digunakan kembali, gunakan Ember.Component .
Semoga ini bisa membantu.
Memperbarui
Dengan publikasi Road to Ember 2.0 Anda sekarang dianjurkan untuk menggunakan Komponen, bukan Tampilan di sebagian besar kasus.
{{view.xxxx}}
bekerja di komponen yang sama seperti dalam tampilan.Jawabannya sederhana: gunakan komponen
Menurut video pelatihan yang direkam pada Agustus 2013, Yehuda Kats dan Tom Dale (Anggota Tim Inti Ember) mengatakan kepada para penonton untuk tidak menggunakan tampilan kecuali Anda seorang pengembang kerangka kerja. Mereka telah membuat banyak peningkatan pada Setang dan Komponen yang diperkenalkan, sehingga tampilan tidak lagi diperlukan. Tampilan digunakan secara internal untuk memberi daya pada hal-hal seperti {{#if}} dan {{outlet}}.
Komponen juga sangat mirip dengan standar Komponen Web yang akan dibangun di peramban, sehingga ada banyak manfaat sampingan untuk menjadi nyaman membangun Komponen Ember.
Pembaruan 2014-11-27
Lebih penting lagi sekarang menggunakan komponen daripada tampilan, karena Ember 2.0 akan menggunakan Komponen yang Dapat Diarahkan saat rute dimasukkan, bukan pengontrol / tampilan. Agar bukti aplikasi Anda di masa mendatang, yang terbaik adalah menjauh dari Views.
Sumber:
sumber
Seperti yang ada sekarang -
v2.x
menjadi rilis stabil saat ini - tampilan telah sepenuhnya ditinggalkan. Dikatakan bahwa pandangan sedang dihapus dari Ember 2.0 API .Jadi, menggunakan
{{view}}
kata kunci di Ember 2.0 akan memicu pernyataan:Jika Anda harus menggunakan tampilan dalam Ember 2.0 Anda dapat menggunakan addon bara-legacy-views , yang akan kompatibel dengan Ember hingga versi 2.4 .
Jadi, untuk meringkas - komponen adalah sekarang (pandangan dihapus) dan masa depan - mereka juga akan menggantikan pengontrol. Lihat Komponen Routable RFC .
sumber