Pertanyaan Rute Ember vs Pengontrol vs Tampilan


Saya telah membaca sebagian besar panduan pemula di situs Ember.js tetapi saya masih bingung tentang tempat yang tepat untuk meletakkan barang.

  1. Rute - dari orang-orang riset online menyarankan menempatkan routing logika terkait dalam rute. Itu semua bagus, tapi satu-satunya yang bisa saya pikirkan adalah this.transisionTo(). Saya membaca di tempat lain bahwa semua operasi yang terkait model harus di rute karena itu adalah di mana model bidang didefinisikan. Apakah ini benar? Apa sajakah kasus penggunaan yang baik? actions di rute di atas pengontrol?

  2. Melihat - Saat ini, saya tidak bisa melihat sudut pandang. Dokumen mengatakan bahwa ia menangani peristiwa DOM asli tetapi saya mungkin akan selalu menggunakan {{action}} helper yang akan ditangani oleh controller. Jadi apa sajakah kasus penggunaan yang baik menggunakan pandangan atas controller dalam hal tindakan? Apa sajakah kasus penggunaan yang baik dari tampilan umumnya mempertimbangkan saya akan menggunakan komponen di atas tampilan untuk kode yang dapat digunakan kembali.

  3. Kontroler - Tampaknya bagi saya bahwa pengontrol dapat melakukan apa pun yang dapat dilakukan oleh View atau Rute. Itu bisa transisi menggunakan this.transitionToRoute(), dapat menghemat penggunaan model this.get('model').save() dan dapat menangani tindakan menggunakan {{action}} pembantu. Semua tutorial pemula tampaknya mengabaikan pandangan sama sekali dan menggunakan pengontrol sebagai gantinya. Apa sajakah kasus penggunaan yang baik dari menggunakan Pengontrol atas Tampilan atau Rute?

Saya rasa ini semua bermuara pada pemahaman yang buruk tentang bagaimana semuanya tergantung bersama. Saya tidak dapat menemukan apa pun secara online atau di dokumen yang eksplisit tentang area abu-abu seperti tempat menggunakan {{action}} pembantu untuk skenario yang berbeda. Tautan ke beberapa materi bagus juga akan sangat membantu.


32
2017-07-12 11:04


asal


Jawaban:


Memperbarui: Tidak semua informasi ini akan benar untuk Ember 2. Sejauh yang saya tahu, Ember 2.0 hanya akan menggunakan Komponen.

Bagaimana Berbagai Komponen Ember.js Cocok Bersama

Model

Model menangani interaksi dengan penyimpanan data. Contoh penyimpanan data dapat berupa server RESTful atau Localstorage.

Template

Sebuah Template menangani pembuatan HTML dari data yang tersedia untuk Kontroler dan Tampilan. Pengontrol pada gilirannya memiliki akses ke Model.

Kontroler dan Tampilan

Controllers and Views sangat mirip dan keduanya bertindak pada peristiwa yang dihasilkan pengguna. Seorang Pengendali seharusnya mengambil tindakan pada peristiwa semantik seperti submit dan Tampilan seharusnya mengambil tindakan pada peristiwa interaksi seperti focus atau click.

Router

Ember memiliki satu Router. Router menghubungkan url ke Rute. Sebagai contoh users/:user_id untuk users.show rute atau UsersShowRoute.

Rute

Setiap Rute, ketika diaktifkan, akan menguraikan url ke sebuah negara. Sebagai contoh users/:user_id mengharuskan pengguna untuk masuk untuk melihat profil teman. Rute A memastikan pengguna login dan mengurus keadaan login.

A Route mengambil informasi dari penyimpanan data. Sebagai contoh users/pekhee akan mengambil pekhee pengguna dari penyimpanan data dan memberikannya kepada Kontroler dan Tampilan.

Sebuah Rute secara dinamis memilih apa yang dibutuhkan Controller dan Lihat atau berapa banyak dari yang dibutuhkannya.

Sebuah Rute mengelola keadaan aplikasi dan bagaimana keadaan itu harus diwakili. Namun, Model yang mengurus pengelolaan aplikasi untuk Route dan Controllers / Views harus berhati-hati dalam mengelola detail-detail rumit dari perwakilannya.

Simpan Logika sebagai Relevan dan Lokal Setegas: Beberapa Catatan

  • Jika logika Anda tidak peduli tentang konteks atau model apa pun activate panggilan balik rute.
  • Jika sepotong logika hanya perlu tahu model memasukkannya afterModel panggilan balik rute.
  • Jika perlu untuk mengetahui konteks Controller atau berinteraksi dengan makna semantik dari suatu sumber daya taruh di controller.
  • Jika perlu untuk mengetahui konteks Lihat atau berinteraksi dengan representasi dari sumber daya meletakkannya dalam tampilan.
  • Jika perlu mengetahui kedua konteks atau berinteraksi dengan semantik dan penyajian sumber daya, pertama-tama berikan peristiwa tersebut ke tampilan kemudian diteruskan ke pengontrol.

Contoh

Ketika lebih dari satu Pengendali bekerja dengan satu Model, pertahankan aksi semantik pada Rute tertinggi yang mungkin dalam rantai jika tidak menyimpan logika di sebagian besar Kontroler lokal.

Simpan kode terkait animasi di Lihat dan gunakan Api Cair.

Terkadang setiap pengguna memiliki banyak posting dan setiap posting memiliki banyak komentar. Cobalah untuk memiliki pengguna relevan Rute kembali. Kemudian tanyakan pada pengguna yang relevan untuk posting PostsRoute dan setelah itu coba tanyakan komentar yang relevan di CommentsRoute. Ini membuat logika menjadi lokal mungkin. Anda berkomentar rute tidak perlu tahu bagaimana Anda mengambil pengguna.


15
2017-07-13 01:45



Saya pikir ember2.0 dimaksudkan untuk meninggalkan tampilan dan pengendali, itu ingin membuat kode Anda lebih dapat digunakan kembali dan itulah mengapa komponen lebih diterima. Untuk kepentingan menempatkan tindakan dalam rute bukannya pengendali, saya hanya dapat melihat bahwa itu memudahkan pemahaman bara untuk pengguna baru. Anda tidak perlu menghabiskan banyak waktu untuk mencoba memahami hubungan antara pengontrol, rute, router, tampilan, dan template lagi. Itu tebakan saya.


0
2017-12-21 16:28