Ho sentito da vari oratori di ng come $ watch è pericoloso per le prestazioni della vostra applicazione. Mi chiedevo se qualcuno ha confrontato le prestazioni di Rxjs 'Observable against $ watch in un'applicazione AngularJS. So che Observables farà parte di Angular 2.
risposta
I due meccanismi di osservazione dei cambiamenti sono intrinsecamente diversi.
$watch
è una forza bruta, meccanismo a trazione. Dove l'osservatore è attivo e (generalmente) ha bisogno di visitare ogni oggetto/espressione osservato dopo che si è verificato un cambiamento. Sicuramente più osservare più lentamente l'intero processo.
Observable
implementa un meccanismo basato su push. L'osservatore è passivo e viene avvisato quando qualcosa è cambiato. Correttamente implementato consente una propagazione delle modifiche molto più intelligente.
Da quello che so, utilizzando Observable
s in angolare 2.0 è facoltativo, ma consigliato. Inoltre, angular 2.0 implementerà un flusso di dati unidirezionale simile a flux. Le modifiche dei dati si propagano solo verso il basso nel DOM: un componente può osservare direttamente/dipendere dai dati dei propri antenati ma non dai loro discendenti. Dopo una modifica c'è la garanzia che solo alcuni sottoalberi del DOM devono essere aggiornati. Nella maggior parte dei casi questa sottostruttura sarà molto più piccola dell'intero DOM.
C'è a great video dal 2015 ng-conf benchmarking 1.x angolare, reattivo e angolare 2.0. (non so se si usa osservabili però)
Un'ultima cosa su Observable
: offre molto più di quanto sopra descritto ed è un ottimo modo di trattare con eventi asincroni.
- 1. Impaginazione osservabile RxJs
- 2. AngularJS: Basic $ watch non funziona
- 3. RxJS: Come posso aggiornare "manualmente" un Osservabile?
- 4. Come funziona l'operatore sharex() di RxJs 5?
- 5. RxJs ottenere valore da osservabile
- 6. RxJS sequenza osservabile divisa in più uscite
- 7. come può avviare e interrompere un intervallo osservabile in RXJS?
- 8. come funziona confrontare e confrontare?
- 9. RxJS e AngularJS HTTP: come posso ottenere questo risultato?
- 10. AngularJS: Clear $ watch
- 11. AngularJS: watch element visibilty
- 12. Come posso risolvere un Osservabile all'interno di un altro Osservabile? - rxjs
- 13. grunt-contrib-watch con LiveReload non funziona
- 14. Come usare RxJs distinctUntilChanged?
- 15. Creazione di un elenco filtrabile con RxJS
- 16. Chaining osservabili in RxJS
- 17. Come eseguire il conto alla rovescia con gli osservabili RxJS?
- 18. Promise .all() con RxJS
- 19. Come iniettare HTML in un modello con Polymer 1.x?
- 20. È x + = 1 più efficiente di x = x + 1?
- 21. RxJS: Come posso fare un "se" con Observables?
- 22. Raccogli RxJS Observable to Array
- 23. Promise.all comportamento con RxJS Observables?
- 24. angularjs 1.x ciclo di vita del supporto
- 25. come funziona "$ _ & 1" in perl
- 26. x = y = 1 in Scala?
- 27. Pattern per shareReplay (1) in RxJS5
- 28. Come guardare un selettore JQuery utilizzando l'ambito AngularJS. $ Watch() Metodo
- 29. Significato di X = X [:, 1] in Python
- 30. aggiungi watch su una variabile non scope in angularjs
Mi piacerebbe saperne di più a riguardo – Ant