2013-01-04 11 views
5

Mi piacerebbe utilizzare ClojureScript per creare un'app web in stile "pagina singola". A tal fine, ho bisogno di un sistema di template sul lato client. Qualcuno ha esperienza e/o raccomandazioni su quali sistemi di template ClojureScript dovrei esaminare? Grazie.Templating in ClojureScript

risposta

5

potresti dare un'occhiata a dommy, un sistema di template scritto/usato da Prismatic.

2

Avendo usato sia Crate che Dommy, posso dire che sono entrambi molto buoni. Crate è solo un'implementazione di Hiccup da Clojure convertita in Clojurescript per la creazione di template, quindi dovrai ancora usare Domina per selezionare gli elementi. Se si desidera un framework che gestisce sia la selezione Dom e quindi utilizzare template Dommy

2

So tre gusti di template per ClojureScript:

  1. Dommy: creare e manipolare nodi DOM direttamente dal codice cljs.
  2. Crate: dichiara e manipola i dati cljs (vettori, mappe, ecc.) Che vengono poi trasformati in nodi DOM.
  3. Enfocus: scrivere HTML in file HTML, elaborarli e trasformarli da cljs. È un modo diverso di pensare ai modelli e si basa sulla libreria Clj Enlive.

Ci sono biblioteche che producono Reagire nodi DOM invece di normali nodi DOM ma funzionano allo stesso modo di quelli di cui sopra:

  1. Qualsiasi Cljs Reagire involucro, come Om o reagente
  2. Sablono
  3. Kioo

so che ti stai chiedendo solo per template e reagire viene fornito con più di questo, ma se avete bisogno di qualcosa oltre t lui operazioni più elementari, raccomanderei qualsiasi approccio basato su React.

0

Oltre alle risposte già ricevuti, mi sento di raccomandare che si estrae sistemi basati su React quali Om, Reagent o Quiescent. Dei tre, il mio preferito è Reagent, ma nessuno di questi sarebbe un miglioramento rispetto alla tradizionale manipolazione DOM IMHO.

1

Dal momento che non è stato menzionato finora: mi piace molto Hoplon. Esso combina la seguente serie di strumenti: elementi HTML

  • utente sono funzioni regolari e possono essere creati e composti funzionalmente con HLisp.
  • Flusso di dati simile a un foglio di calcolo con la libreria ClojureScript Javelin. Modella intuitivamente il comportamento reattivo usando celle e formule.
  • Interagire con il server con la libreria Castra Clojure e ClojureScript. Definire funzioni sul server, chiamarle dal client.

È possibile utilizzare come una soluzione full-stack o lavorare con esso sull'unico lato client. Per darvi un'idea (tratto da GitHub):

(page "index.html") 

(defn my-list [& items] 
    (div 
    :class "my-list" 
    (apply ul (map #(li (div :class "my-list-item" %)) items)))) 

(def clicks (cell 0)) 

(html 
    (head 
    (title "example page")) 
    (body 
    (h1 "Hello, Hoplon") 

    (my-list 
     (span "first thing") 
     (span "second thing")) 

    (p (text "You've clicked ~{clicks} times, so far.")) 
    (button :click #(swap! clicks inc) "click me")))