Quindi, idealmente, secondo me, sulla base di una singola definizione schema, dovrei essere in grado di generare completamente la creazione di un aggiornamento di lettura (CRUD) in un contesto web, vale a dire:C'è qualcosa per CRUD generico in forme clojure/clojurescript
- cliente: una componente tabella di dati HTML interattivo per le operazioni, magari con la modifica in linea, ecc
- cliente: un componente modulo per la modifica di un singolo record, tra cui la validazione come si deduce dallo schema
- server: una route per accedere ai dati per il popolamento e l'aggiornamento di tali componenti (endpoint REST) server
- : un'implementazione per la permanenza dei dati, ad esempio, in una tabella SQL.
Quindi idealmente; definirei semplicemente uno schema per, diciamo, un tipo di dati Person con nome e cognome e campi dell'indirizzo, e quindi chiamo una macro o una funzione come (defcrud Person my-person-schema)
e funziona, posso andare su una pagina web, vedere i dati, modificare/cancellare i dati e salvare i dati fino al server.
La mia domanda è: c'è qualcosa nel mondo dei clojure che fa qualcosa (o parzialmente) come descritto sopra?
Nel mio recente progetto full clj/cljs, mi sono ritrovato a scrivere un sacco di codice per questa roba di base. Nei tempi passati, quando utilizzavo un framework GWT chiamato SmartGWT, dovevo semplicemente definire un new ListGrid(myDataSource)
e definire un'origine dati (equivalente allo schema), e il resto veniva dedotto (almeno qualcosa con impostazioni predefinite sensibili era).
Il tipo di alto livello SmartGWT di sviluppo è ciò che consente la vera prototipazione rapida per il tipo di app aziendali che ho bisogno di costruire abbastanza spesso. GWT ha i suoi svantaggi, come il tempo di compilazione molto lento per le app più grandi e il fatto che devo scrivere Java, ma è il livello di integrazione server-client che sto cercando in Clojure.