Domande di architettura riguardanti, framework MV **, modelli di dati NoSQL e refactoring graduale

6

Ho una web app che mi piacerebbe ridefinire gradualmente aggiungendo una struttura.

Ho ristretto le opzioni a Backbone (con alcuni plugin), Ember.js e AngularJS

Il mio obiettivo è quello di refactoring di quell'app, che ha i soliti spaghetti jQuery e gradualmente aggiungere qualche struttura ad esso.

Requisiti

  • non un framework "tutto o niente", ad es. consente di spostare gradualmente il codice da "prima" a "dopo" senza riscrivere l'app da zero (vincitore - Backbone?)
  • qualcosa che ha un futuro, le persone sembrano entusiaste e hanno una grande compagnia dietro (Angular prende questo proiettile)
  • Lasciami fare a volte cose "a modo mio" e non forzare un paradigma (Backbone un chiaro vincitore qui)
  • Qualcosa che aumenterà davvero la mia produttività e rimuoverò la necessità di codice boilerplate (Angolare + Brace)
  • Qualcosa che è buono non solo con le cose ovvie, ma anche le cose complesse, ad es. transizioni di animazione, modelli nidificati, gestione di viste di dialogo modali, supporto per trascinamento della selezione, sistema di widget ecc.

Un'opzione è diventare uno sviluppatore avanzato in tutti e 3 e poi l'altro è chiedere alle persone che hanno fatto qualcosa di simile

So che con Backbone posso fare tutto ciò che voglio, ma voglio sapere se non devo "fare attenzione" e mi chiedo se non mi sto perdendo non correndo il rischio di usare AngularJS / Ember.js

Domande

Quindi le mie domande specifiche, comprensibili, costruttive (per quanto possibile) sono:

  1. Angular / Ember è in grado di supportare il drag and drop senza piegarsi all'indietro?
  2. È possibile che entrambi questi framework supportino le transizioni animate?
  3. Quale di questi 2 framework è più facile "aggiungere" gradualmente e non riscrivere completamente le cose "a modo loro"
  4. Quale di questi ha un supporto migliore per NoSQL / modelli basati su documenti come in documenti simili a MongoDB (ad esempio un documento JSON piuttosto che un modello relazionale)
  5. Quale di questi ha migliorato il supporto per modelli complessi (simile al n. 4)

Sia Ember Data che Backbone-relazionale sembrano provenire da un paradigma di database relazionale, e mi chiedo se c'è qualcosa che può costruire un modello da una struttura ad albero multilivello / nidificato arbitraria senza dover definire un modello NoSQL in un relazionale come la struttura dei dati (ad esempio hasMany, appartiene invece di un solo documento simile a JSON).

Inoltre, non voglio smettere di usare JqueryUI perché non è fatto al 100% con la "modalità Ember" o la "modalità angolare", Backbone è davvero la mia migliore opzione? Le belle campane e i fischietti che vengono con Angular / Ember sono in un trade-off con flessibilità?

È una buona scelta architettonica utilizzare Angular o Ember per refactoring di una pasta di callback jQuery esistente con un approccio graduale e iterativo?

    
posta Eran Medan 28.03.2013 - 15:31
fonte

1 risposta

4

Penso che alla tua domanda manchi un vincolo critico, ma lo indirizzi all'interno dei commenti. In particolare, quanto tempo devi investire in questo refactoring?

Il tempo assegnato sarà il requisito vincente e renderà le tue domande dettagliate un po 'discutibili.

Per questa finestra di refactoring corrente, ti è stata assegnata una settimana. Non è davvero il tempo di imparare un nuovo quadro e completo di refactoring significativo anche per un progetto modesto. Aggiungendo i vincoli temporali esterni, e hai forse da 40 a 50 ore per applicare.

Questo periodo di tempo limitato significa che devi scegliere la struttura che ti è più comoda con ora . In base alla tua descrizione e alla tua ricerca, Backbone è il front runner per la selezione.

Sì, potresti "perdere" una qualche nuova funzionalità degli altri framework. Presumendo che tutti e tre i framework siano "live" e ancora in fase di sviluppo, vedrete la differenza "lack-feature" indipendentemente dal framework scelto. I framework continueranno ad andare avanti anche se non puoi continuare a rifattare il tuo progetto. Parte di ogni progetto consiste nell'eliminare potenziali percorsi da seguire in modo da poter concentrare la scelta migliore. Una parte inerente dell'eliminazione di questo percorso è che perderà la caratteristica XYZ che solo il framework meno attraente ha. Ma questo ci riporta indietro nel tempo a essere il tuo limite dominante.

Vorrei incoraggiare la stesura di un elenco prioritario di aree che verranno sottoposte a refactoring. Devi includere attività di verifica insieme a quel refactoring e incoraggerei la possibilità di tenere un po 'di tempo per gestire i problemi imprevisti con la conversione.

    
risposta data 28.03.2013 - 16:24
fonte

Leggi altre domande sui tag