I soliti oggetti di metadati o: come spostare una tipica app ExtJS su jQuery e: cosa manca nel mezzo?

3

Ho inserito un progetto esistente che riguarda esclusivamente il mantenimento di strutture di dati annidate. Avete aziende che sono assidue di account, contatti e note e ... in pratica il solito gruppo di relazioni 1: 1, 1..n, n: m, memorizzate in mysql o postgres, avvolte da Doctrine.

Naturalmente, ogni nodo viene fornito con il solito set di metadati, che richiede la convalida in termini di tipo (numero, testo, ...) e semanticamente (email, url, 'enum' come stato, tipo, valuta).

Più specificamente ciò che ho inserito descrivevo (anche per esperienza precedente) come tipico inferno di ExtJS. Suona familiare a tutti?

  • un tipico singolo URL-Applicazione: nessuna cronologia, nessun segnalibro specifico significativo, oh e ti sfido a premere il pulsante Indietro ...
  • la navigazione a schede è impossibile (il caso di utilizzo non così raro di guardare il cliente A, mentre si inserisce qualcosa di significativo nell'account o cliente B side-by-side)
  • hai quel tipico albero di navigazione sulla sinistra, le cose sulla destra sono chiamate da Ajax. Dati, ma anche un sacco di codice java eseguibile.
  • un strong "tocco di MS Office": gli sprite CSS sono molto, molto semplici, i pull semplici ei pulsanti a scelta multipla richiedono uno sforzo per essere "abbigliati" per essere utilizzabili.
  • Per non parlare di tutti i div blobati come opossed a pochi tag puliti, semanticamente significativi
  • un bel po 'di javascript (alcuni dei quali abbastanza abilmente creati in PHP) per adattarsi a controller e archivi hard-to-debug e un sacco di codice ridondante, per garantire la stessa cosa più e più volte per i vari campi di dati. c'è una gerarchia di classi OOP per quelle Ext. [ux.] griglie e finestre, ma di aiuto limitato.

Da esperienze precedenti mi piacerebbe che io passassi a un'API REST-ful diritta, roba fatta in realtà tra una richiesta di pagina, URl ti dà come dovrebbe apparire:

foo.com/accounts/16324/contact/create
foo.com/customer/search/state=California

E fai in modo che l'intero sia basato su jQuery, dove guadagno più controllo. Questo mi porta alla mia domanda generale: mi manca uno strato intermedio?

Problemi: mi chiedo, come riempire alcune lacune (che probabilmente incontreranno anche altre "Converte", quindi oso fare una domanda così ampia):

  1. quali plugin sarebbero utili per le tabelle (modificabili)? Inclusi commenti ridimensionabili e ordinabili? Conosco jQueryUI e jQueryTools ma non penso che sia la soluzione giusta. Ho bisogno di una tabella / griglia veramente buona, probabilmente con le routine di backend che si adattano.

  2. * In generale, sento che mi manca uno strato intermedio tra ORM e UI se mi arrangio con le strutture dati, posso portare un automatismo del tipo "Ecco la mia struttura dati, inclusi i tipi e le regole di convalida, (oh , e i dati esistenti / predefiniti) ora creano il modulo da esso "Poiché questo potrebbe variare da cliente a cliente, è un altro motivo per non completare questo hardcode a molto.

Anche la funzione di memorizzazione di Ext-JS-ish di inviare solo i campi che sono realmente cambiati varrebbe la pena. Come riconosce la sporcizia (ovvero la necessità di confermare "salva / annulla" alla chiusura del dialogo). *

  1. Molto preziosi sarebbero meccanismi generici di "tentativene sotto-dialoghi", ad es. Salvaschermo di Windows: andare in un menu, da lì a un sottomenu, dire ok nella finestra di dialogo secondaria, quindi annullare su main == > cancella tutto, niente memorizzato. In altre parole: archiviare in modo flessibile alcuni set di dati gerarchici nella sessione sarebbe positivo. E spingerli nel DB (con mezzi generici ripetitivi) quando ho ottenuto il vero "OK".

Qualche buon suggerimento per me la parte di modifica della tabella nel frontend e / o nella parte centrale della struttura dei dati?

Grazie, Danke, Merci, Mille grazie, Xie xie!

Fronker

    
posta Frank Nocke 24.10.2011 - 18:36
fonte

1 risposta

1

... as typical ExtJS hell. Does this sound familiar to anyone?

a typical single URL-Application: No history, no meaningful specific bookmarks, oh and dare you pressing the back button...

Sembra un rant nostalgico per tempi più semplici.

tabbed browsing is impossible (the not so rare use case of looking at Customer A, while entering something meaningful into Account or Customer B side-by-side)

Questo è sicuramente possibile; puoi utilizzare ExtJS per creare schede o modificare i tuoi collegamenti per eseguire un aggiornamento completo della pagina.

a hell of javascript (some of it quite akwardly created in PHP) to suit hard-to-debug controllers and stores and plenty of redundant code, to ensure the same thing over and over again for the various data fields.Sure, there is OOP class hierarchy for those Ext.[ux.]grids and windows, but of limited help.

Questa è solo una cattiva pratica, indipendente da ExtJS. Dovresti spostare tutto il codice JavaScript sul lato client, pulirlo e poi decidere la tua prossima mossa. Passare a jQuery non risolverà questo problema. Certo, jQuery è più semplice, ma sembra che tu stia facendo affidamento sulle funzionalità di ExtJS che saranno difficili da costruire con jQuery.

Sembra che tu sia nuovo in ExtJS e reagisci alla sfortunata curva di apprendimento. Dovresti provare a raddrizzare la nave prima di abbandonarla.

    
risposta data 25.10.2011 - 16:39
fonte

Leggi altre domande sui tag