Sto cercando di utilizzare Backbone.Marionette e ho letto il docs su github su wreqr. Quindi, qual è la differenza tra Aggregatore eventi, Comandi e Richiesta/Risposta. E quando usare l'uno o l'altro?Differenza tra aggregatore di eventi, comandi e richiesta/risposta
risposta
Essi bascially tutta la messaggistica uso, e la loro differenza è principalmente semantica:
- evento aggregatore: invia un messaggio quando succede qualcosa. Codice da qualche altra parte potrebbe essere in ascolto per quel messaggio, ma forse non
- richiesta/risposta: hanno il codice inviare una richiesta, e si aspettano una risposta (ad esempio, mi mandi i dati rinfrescati)
- comandi: il codice in un posto comandi codice da qualche altra parte per eseguire un'azione. Di solito non c'è un valore di ritorno.
Vorrei aggiungere a David Sulc answer.
La richiesta/risposta è molto diversa dall'aggregatore di eventi e dai comandi. Viene utilizzato per i casi in cui una parte del codice richiede qualcosa da un'altra parte del codice. Una risposta sarebbe sempre prevista. Ora vediamo come l'aggregatore di eventi e i comandi sono diversi.
Marionette Event Aggregator consente di implementare il comportamento di pubblicazione-sottoscrizione. Usando il metodo 'on' puoi sottoscrivere un evento e associare un evento a qualsiasi oggetto. Non è possibile implementare questo comportamento di associazione utilizzando i comandi. Inoltre è possibile avere più oggetti che ascoltano qualsiasi evento particolare. Ci può anche essere un caso in cui nessun oggetto è legato o in ascolto di alcun evento.
I comandi sono specificatamente pensati per eseguire alcune azioni in qualche altra parte del codice. Ci può essere solo un gestore per un particolare comando, a differenza degli eventi in cui è possibile avere più listener.
Quindi, per riassumere, i casi d'uso per ciascuna sarebbero:
1) richiesta/risposta: Quando avete bisogno di qualche risposta da un'altra parte del codice.
2) evento Aggregator: Quando si desidera associare oggetti a eventi
3) Comandi: si desidera solo qualche altra parte del codice per eseguire un compito.