2012-12-16 7 views
10

Sto avendo un po 'di difficoltà durante la creazione di un'applicazione web basata su Clojure. È una semplice app CRUD che ho iniziato ad esplorare l'ecosistema web Clojure. Sto sperimentando diverse librerie come Hiccup, Enlive, Compojure e Noir (anche se Noir sembra essere sull'orlo della deprecazione).applicazioni web "ricche" con Clojure

La mia domanda è in realtà due domande. Il primo riguarda l'apparente mancanza di convenzioni per la creazione di applicazioni web per clojure. E in secondo luogo ho bisogno di alcuni suggerimenti sulla creazione di componenti html "ricchi".

Quello che mi piace del modo Clojure è la facilità di far suonare diverse librerie. Sostituire la vita con il singhiozzo e viceversa non è un grosso problema. Tutto gioca il suo unico e semplice ruolo. Molto diverso da un quadro complesso come JSF.

Ma c'è il punto: questa grande libertà mi fa sentire un po 'perso. In JSF so dove tutto ha il suo posto. Uso Spring per integrare tutti i componenti, Spring-Security per gestire tutte le sessioni. Le librerie di componenti mi liberano dallo stress dovuto alla gestione di problemi html, javascript e ajax.

Soprattutto le librerie di componenti di cui sopra è quello che mi manca con Clojure. Mi sono trovato a implementare cose come un databile con caratteristiche come alternanza di colori di riga, impaginazione, ordinamento di colonne, filtro incrementale e così via. E mi lascia domande su come sincronizzare lo stato del browser e del server di tali componenti, specialmente quando è incluso ajax. Non ero in grado di trovare alcuna risposta matura in rete.

Il vantaggio dei framework: una volta comprese le regole e le restrizioni, è possibile creare la propria applicazione e concentrarsi sulle regole aziendali. L'infrastruttura tecnica è trattata e non dovrebbe essere una distrazione.

Quali suggerimenti ci sono per il mondo Clojure? ClojureScript One è una soluzione? Non l'ho ancora studiato. Qualcuno conosce librerie di componenti che offrono funzionalità simili come ad esempio RichFaces datatable? C'è un modo preferito di trattare con Ajax?


+0

Questo forum non è per discussione. È per risolvere un problema particolare. Clojurescript scarica Javascript per il browser. Per il back-end, Noir è stato appena ritirato a favore di Compojure. – octopusgrabbus

+0

Sono consapevole che questo forum non è in discussione. Ma non mi aspetto la sola risposta "giusta". Ma rimuoverò quell'ultima frase. Come ho già detto, non ho davvero esaminato il "clojurescript One". So cosa è il clojurescript. 'Clojurescript One' mi è sembrato un punto di partenza per avvolgere tutto. Ma forse ho sbagliato ed è solo un'app tutorial per iniziare con clojurescript. – nansen

risposta

3

Tutto quello che posso darvi alcune linee guida:

  • lo scambio di messaggi tra client e server in JSON o FES
  • separare il codice della GUI dal codice-gestione dello stato sul client
  • inserisci il tuo codice di gestione dello stato in crossover in modo da poterlo testare al di fuori del browser
  • organizzare che il codice della tua GUI client sia indipendente da una particolare libreria possibile, vai f o biblioteche con comunità attive e meno dipendenze
+0

Che cos'è il crossover? (punto 3) Il crossover – Bill

+0

è quando si dichiara un percorso del proprio codice da copiare da cljsbuild (il plugin lein) dal sorgente Clojure al sorgente Clojurescript, questo viene fatto con una linea nel project.clj.Ho usato nel senso di rendere quella parte del tuo codice Clojure puro, con assolutamente nessuna dipendenza Clojurescript, che rende possibile testare usando il tuo normale ambiente Clojure. – Hendekagon

+1

Mi piacerebbe sicuramente dare un'occhiata a un esempio completo con fonti in [GitHub] (http://github.com). Fattibile? –