Recentemente ho sentito che ci sono alcuni importanti cambiamenti in arrivo con la 4.2 riguardo al modo in cui funziona un'applicazione MVC. Ho scaricato la versione beta ma l'API sembra tutto uguale. Qualcuno può spiegarmi i cambiamenti imminenti e di cosa si tratta? Devo temere che tutti i miei controller smetteranno di funzionare se aggiorno?Principali modifiche a MVC in ExtJS4.2?
risposta
No, non devi temere a meno che non stai facendo cose totalmente strane.
Bene, le modifiche principali sono che i controller non richiedono più un'istanza Ext.app.Application
per. Ciò è dovuto a una modifica di Ext.app.EventBus
che ora è una sorta di singleton e pertanto consente a tutti i controller di utilizzare la stessa istanza.
Questo è quello che so per ora. Posso aggiornare il mio post se ottengo nuove informazioni
Sì, chiamerei le modifiche che abbiamo apportato a MVC in 4.2 piuttosto importante; tuttavia la compatibilità con le versioni precedenti è sempre stata la nostra priorità. Riconosco che prima della 4.2 ci sono stati molti lunghi problemi irrisolti con l'implementazione di MVC e questo ha spinto le persone a saltare attraverso tutti i tipi di cerchi per fare ciò di cui avevano bisogno. Abbiamo cercato di risolvere questi problemi e semplificare l'esperienza MVC, oltre ad aggiungere diverse funzionalità rivolte agli sviluppatori che hanno app di grandi dimensioni nelle loro mani. 4.2 beta 2 includerà la maggior parte di questi, e ci piacerebbe sentire il tuo feedback su di loro.
ho intenzione di scrivere su questi miglioramenti prima di 4.2 viene rilasciato, ma ecco un rapido elenco:
Ext.app.EventBus
, come @sra detto, ora è un Singleton, ed è sempre disponibile nella vostra applicazione - anche se non ha molto senso usarlo direttamenteExt.app.Controller
non dipende più daExt.app.Application
fare cose, e può essere istanziato senza far apparire l'intero albero delle dipendenze - il che significa che puoi testare i tuoi Controllori!- È ora possibile creare la propria classe Application (es) che si estende da
Ext.app.Application
, e comprendono la logica in questa classe Ext.application()
non fa magia nera indicibile; quando viene passato il nome della classe dell'applicazione, viene semplicemente istanziato. Se si passa un oggetto config come prima, dichiarerà una nuova classe Application con queste opzioni di configurazione e la istanzia - la stessa logica di sopra, un'esecuzione leggermente diversa- Come risultato di due elementi sopra,
Ext.application()
non richiede più tutto il vostro albero delle dipendenze sincrono (è stato), in modo che una cosa da guardare per - ora è possibile dichiarare esplicitamente tutti gli spazi dei nomi (parti di progetto) nella classe Application, per evitare qualsiasi tipo di ambiguità in cui risolvere le dipendenze
Ext.app.Application
ora occupa correttamente con i propri ascendenze e può essere utilizzato come Controller di livello superiore nel applicazione- È stato introdotto un nuovo concetto di domini evento ; ora è possibile sparare e ascoltare eventi non relativi ai componenti.Forniamo diversi domini fuori dalla scatola, ed è facile aggiungere la tua - qualcosa come ho descritto in my article qualche tempo fa, ma più pulito e più potente
Ci sono stati alcuni più piccoli miglioramenti e hack per la compatibilità a ritroso, principalmente interessato al monitoraggio delle dipendenze. Questi non dovrebbero farti inciampare se non fai qualcosa di troppo pazzo. Se lo fai, è per questo che i Betas servono. :)
Spero che questo aiuti!