Sarebbe il sistema di ingegneria del software giusto passare da AngularJS-based a jQuery-based o implementazione ibrida per webapp?

1

Attualmente sto lavorando su una webapp di chat basata su AngularJS, e esegue il polling del server per gli aggiornamenti, quindi li renderò in quello che è praticamente uno scatto diretto in AngularJS. Il risultato sembra appropriato per la maturità del progetto, ma chiude completamente la copia degli appunti dal dialogo perché ridisegna il testo per ciascun intervallo di polling e sovrascrive l'area pertinente dello schermo con i dati più recenti.

Posso vedere come ridurre questo problema con manipolazioni DOM più chirurgiche in jQuery, dove c'è un DIV per ogni blocco completo di dati, solo i DIV il cui contenuto è effettivamente cambiato vengono sovrascritti, e i nuovi DIV vengono aggiunti al contenitore piuttosto che nel complesso. E forse qualcuno può indicare come realizzare un'implementazione AngularJS più chirurgica in modo da aggiornare una piccola parte dei dati piuttosto che battere quell'area del DOM quando i dati sono stati interrogati ( <div ng-repeat="contribution in contributions" ...> ).

Tuttavia, volevo chiedere l'adeguatezza del mio approccio. AngularJS ovvia alla maggior parte della necessità di specificare le manipolazioni del DOM a basso livello; se qualcosa di chirurgico fosse desiderato, un buon programmatore di AngularJS passerebbe a qualcosa come jQuery che è più destinato a consentire manipolazioni DOM di basso livello, o AngularJS offre funzionalità per ulteriori aggiornamenti chirurgici in modo che i DIV i cui contenuti siano statici non vengano ridisegnati?

Ho pensato di chiedere questo a StackOverflow, e potrebbe essere opportuno chiedervi come fare un aggiornamento più chirurgico in modo che se l'utente ha iniziato a selezionare un'area, le cose che non saranno cambiate di nuovo non otterranno battuto. Tuttavia, volevo chiedere qui. Conosco meglio jQuery di AngularJS e mi è sembrato opportuno fare una domanda "Fai un passo indietro" sull'utilizzo corretto di AngularJS.

Un programmatore di AngularJS che sapesse che jQuery lo fa con jQuery, lo fa con una versione più chirurgica dell'uso di AngularJS o fa qualcos'altro? In che modo i programmatori che pensano in AngularJS gestiscono una situazione in cui hanno bisogno di un controllo più preciso di quello consentito dalla versione predefinita?

Grazie,

    
posta JonathanHayward 04.08.2014 - 01:48
fonte

1 risposta

3

La maggior parte delle volte puoi raggiungere il tuo obiettivo con qualsiasi tecnologia, quindi la tua domanda è "Devo restare con jQuery che conosco bene o prendere il tempo per imparare AngularJS". Se stai cercando un lavoro a breve termine e ti viene chiesto di ottenere rapidamente un risultato, usa jQuery. Learning AngularJS o qualsiasi nuova tecnologia richiede tempo ma è un investimento a lungo termine.

Per quanto riguarda la ridisegnazione dell'intero schermo, questa è una domanda tecnica più appropriata per StackOverflow.

Per prima cosa durante il polling di nuovi contributi, non devi aggiornare i tuoi dati se non ci sono cambiamenti. Questo lascerà il DOM invariato e consentirà la copia.

Quindi dobbiamo gestire il caso quando vengono ricevuti nuovi contributi. Quello che probabilmente stai facendo a un certo punto è questo:

$scope.contributions = updatedListOfContributions;

Questo in effetti dice ad AngularJS di sostituire tutti i contributi. Invece, dovresti modificare l'elenco esistente utilizzando i metodi splice o push dell'oggetto Array .

$scope.contributions.push(newContribution);

Vedi Plunker che aggiorna la lista. Seleziona i primi due mesi prima che scada il timeout e la tua selezione rimarrà invariata dopo l'aggiornamento.

Infine, se stai realizzando applicazioni in tempo reale, non dovresti eseguire periodicamente il polling del tuo server perché non è scalabile. Se possibile, usa WebSockets che aggiornerà i tuoi contributi solo quando ci sono cambiamenti.

    
risposta data 04.08.2014 - 06:34
fonte

Leggi altre domande sui tag