2012-02-09 4 views
8

Nota: Sono uno sviluppatore di backend (Java) di mestiere e lavoro in Clojure nel mio tempo libero, quindi perdonami per la mia ignoranza.Sviluppo "modello" per applicazioni clojurescript/clojure

Sto cercando di capire come funziona il Clojurescript e come potrebbe potenzialmente adattarsi ai progetti su cui sto lavorando o che intendo lavorare in futuro. Essendo cresciuto con la mentalità di sviluppo web "classica" (ad esempio Clojure che esegue il backend, distribuendo i dati al frontend tramite JSON per essere elaborati in JS o restituendo una pagina HTML per il rendering del browser), ho problemi cercando di capire come Clojurescript potrebbe rendere le cose migliori di questo modello.

Qualcuno potrebbe spiegare a me quello che sarebbe l'approccio generale allo sviluppo ClojureScript/Clojure, visto che il moniker progetto "ClojureScript One" significa che lo sviluppo di applicazioni sarà unificata sotto un unico linguaggio (come tale)

  • Quali compiti verrebbero normalmente eseguiti nella parte Clojurescript dell'applicazione?
  • Quali attività dovrebbero essere normalmente eseguite nella parte Clojure (ad esempio back-end) dell'applicazione?

Qualsiasi aiuto sarebbe apprezzato, o se qualcuno può indicarmi alcuni diagrammi o spiegazioni o altro - sarebbe anche bello!

+4

Clojurescript semplicemente riscrive su javascript, quindi sostituisci Java con Clojure e sostituisci Javascript con Clojurescript nel modello "classico" e lo avrai. I guadagni provengono da Clojurescript che è molto simile a Clojure. Ciò significa che è possibile condividere la logica dell'applicazione tra front e back end. – Peteris

risposta

7

Penso applicazioni Clojure/ClojureScript saranno strutturati in modo molto simile alla tecnologia X backend + JavaScript.

Un grande vantaggio con le applicazioni di architettura con Clojure e ClojureScript: un formato dati più ricco di JSON (è possibile rappresentare hash-maps e set con chiavi arbitrarie) senza perdere la compattezza.

JavaScript è un linguaggio fine e raffinato ma ClojureScript offre alcuni vantaggi. È semanticamente più semplice (funzionale), viene fornito con una ricca libreria standard, una robusta libreria di applicazioni testate in battaglia (Google Closure) e tutti i vantaggi che si ottengono dall'applicazione raffinata dell'astrazione sintattica tramite macro.

Detto questo, è ancora molto software alfa e gli strumenti richiedono ancora molto lavoro.

2

Un po 'di informazioni su di me, ho sviluppato con Clojurescript, JQuery, Vaadin, Servlets, JSP e molte altre tecnologie web.

1) Clojurescript è molto più difficile da apprendere rispetto a qualsiasi altra tecnologia Web che ho utilizzato in base alle tue necessità, conoscenza specifica di Java, Clojure, Closure (con un s;), Closure Lib e Closurescript.

2) Clojurescript non ha senso per una piccola app. Ha senso solo quando si ha un sacco di elaborazione lato client

3) L'unico utilizzo del Clojurescript per quanto vedo è come un javascript migliore (che è il motivo per cui è più adatto alle app più grandi) come la parte minificatore di Clojurescript è disponibile per javascript troppo

4) Solo alla fine cliente sarebbe scritto in JavaScript, il server sarebbe in servlet/Java Clojure

+3

Penso che la vera difficoltà di sviluppo attorno a ClojureScript sia dovuta principalmente a: 1) è ancora un software di qualità alpha, 2) un problema di utensili – dnolen

1

Forse Ganelon micro-framework (che incidentalmente sono autore di) soddisferà le vostre esigenze - il modello di esecuzione è simile a Vaadin: il codice Clojure lato server spinge gli aggiornamenti dell'interfaccia utente al browser tramite AJAX/JavaScript, ma non lo facciamo t memorizzare lo stato dell'applicazione in sessione per impostazione predefinita.

la demo e documentazione sono disponibili presso http://ganelon.tomeklipski.com/

1

Per me, clojure e ClojureScript offre il codice più pulito di pila mista. C'è solo una lingua a cui pensare e il codice è abbastanza facile da leggere.

Al backend il clojure fa le cose che di solito farebbero java. Convalida degli input, salvataggio nel database e, soprattutto, implementazione della business logic. Il nostro backend convalida anche i dati in entrata/in uscita per tipi utilizzando schemi prismatici.

Frontend in breve: Otteniamo un bel codice usando ClojureScript ed è veloce da scrivere. Durante la scrittura di componenti dell'interfaccia utente viene utilizzata la versione ClojureScript di material-ui. Dobbiamo scrivere meno codice rispetto a JavaScript e trovo che il nostro codice componente UI sia più facile da leggere rispetto alla controparte JavaScript. Uno dei motivi principali sono i tag di chiusura più brevi e il disturbo minore del linguaggio di codifica. Lo sviluppo con ClojureScript è abbastanza veloce.

Naturalmente ClojureScript è usato per il semplice convalida imput come RegExp per i numeri di telefono, ecc

Uno degli svantaggi di clojure che probabilmente avete notato è lunghe code dopo aver dato i nomi propri alle funzioni. Non ho trovato un proiettile d'argento su come affrontarlo.

As dnolen ha dichiarato: ClojureScript è ancora in fase di sviluppo. È molto meglio ora di quanto non fosse 6 mesi fa, quindi dovrai continuare a controllare la sua maturità di tanto in tanto.