2012-12-16 8 views
10

Ich habe ein wenig Mühe beim Erstellen einer Clojure basierten Web-Anwendung. Es ist eine einfache CRUD-App, mit der ich das Clojure-Web-Ökosystem erforscht habe. Ich experimentiere mit verschiedenen Bibliotheken wie Hiccup, Enlive, Compojure und Noir (obwohl Noir am Rande der Abwertung zu sein scheint).'reiche' Web-Anwendungen mit Clojure

Meine Frage ist eigentlich zwei Fragen. Zum einen gibt es offenbar fehlende Konventionen für den Aufbau von Clojure-Web-Apps. Und zweitens brauche ich ein paar Tipps, um "reiche" HTML-Komponenten zu erstellen.

Was ich am Clojure-Weg liebe, ist die Leichtigkeit, mit der verschiedene Bibliotheken zusammenspielen. Das Ersetzen von Belebung durch Schluckauf und umgekehrt ist keine große Sache. Alles spielt seine einfache und einfache Rolle. Ganz anders als ein komplexes Framework wie JSF.

Aber da ist der Punkt: Diese große Freiheit lässt mich ein bisschen verloren fühlen. In JSF weiß ich, wo alles seinen Platz hat. Ich verwende Spring, um alle Komponenten zu integrieren, Spring-Security, um alle Session-Sachen zu verarbeiten. Komponentenbibliotheken entlasten mich vom Umgang mit HTML, Javascript und AJAX-Problemen.

Vor allem die genannten Komponentenbibliotheken fehlt mir bei Clojure. Ich implementierte Dinge wie eine Datentabelle mit Funktionen wie alternierende Zeilenfarben, Paginierung, Spaltenreihenfolge, inkrementelle Filter und so weiter. Und es wirft Fragen auf, wie man den Browser- und Serverzustand solcher Komponenten synchronisiert, besonders wenn ajax enthalten ist. Ich konnte keine reife Antwort im Netz finden.

Der Vorteil von Frameworks: Sobald Sie die Regeln und Einschränkungen verstanden haben, können Sie Ihre Anwendung erstellen und sich auf die Geschäftsregeln konzentrieren. Die technische Infrastruktur wird behandelt und sollte keine Ablenkung darstellen.

Welche Vorschläge gibt es für die Clojure-Welt? Ist ClojureScript One eine Lösung? Ich habe es noch nicht untersucht. Kennt jemand Komponentenbibliotheken, die ähnliche Features wie zum Beispiel RichFaces Datatable bieten? Gibt es einen bevorzugten Umgang mit Ajax?


+0

Dieses Forum dient nicht zur Diskussion. Es ist für die Lösung eines bestimmten Problems. Clojurescript blendet Javascript für die Browserseite aus. Für das Backend wurde Noir zugunsten von Compojure veraltet. – octopusgrabbus

+0

Ich bin mir bewusst, dass dieses Forum nicht zur Diskussion steht. Aber ich erwarte nicht die eine "richtige" Antwort. Aber ich werde diesen letzten Satz entfernen. Wie gesagt, ich habe mich nicht wirklich mit 'Clojurescript One' beschäftigt. Ich weiß, was Clojureschrift ist. "Clojurescript One" schien mir wie ein Ausgangspunkt, um alles aufzuwickeln. Aber ich irre mich vielleicht und es ist nur eine Tutorial-App für den Start mit Clojurescript. – nansen

Antwort

3

Alles, was ich kann Ihnen einige Richtlinien:

  • Austausch von Nachrichten zwischen Client und Server in JSON oder EDF
  • Ihren GUI-Code von Ihrem State-Management-Code auf dem Client trennen
  • setzen Sie Ihre State-Management-Code in Crossover, so dass Sie es außerhalb des Browsers testen können
  • arrangieren Sie für Ihren Client-GUI-Code, um so unabhängig von einer bestimmten Bibliothek wie möglich, gehen f oder Bibliotheken mit aktiven Communities und den wenigsten Abhängigkeiten
+0

Was ist Crossover? (Punkt 3) – Bill

+0

Crossover ist, wenn Sie einen Pfad Ihres Codes von cljsbuild (lein plugin) von Ihrer Clojure-Quelle zu Ihrer Clojurescript-Quelle kopiert werden, wird dies mit einer Zeile in Ihrem Projekt.clj getan.Ich benutze in dem Sinne, dass dieser Teil deines Codes reines Clojure ist, mit absolut keiner Clojurescript-Abhängigkeit, was es möglich macht, mit deiner normalen Clojure-Umgebung zu testen. – Hendekagon

+1

Ich würde sicherlich gerne ein komplettes Beispiel mit Quellen in [GitHub] (http://github.com) sehen. Machbar? –