2016-04-18 9 views
7

Also, idealerweise, in meiner Meinung, basierend auf einer einzigen schema Definition, sollte ich in der Lage sein, vollständig erstellen Read Update Delete (CRUD) in einem Web-Kontext zu generieren, das heißt:Gibt es etwas für generische CRUD in Clojure/Clojurescript Formen

  • Client: eine interaktive HTML-Daten Tabellenkomponente für die Operationen, vielleicht mit Inline-Bearbeitung usw.
  • Client: eine Formularkomponente einen einzelnen Datensatz für die Bearbeitung, einschließlich der Validierung wie aus dem Schema abgeleitet
  • Server: Eine Route zum Zugriff auf die Daten zum Auffüllen und Aktualisieren der genannten Komponenten (REST-Endpunkt)
  • Server: Eine Implementierung für die Persistenz der Daten in, sagen wir, eine SQL-Tabelle.

Also ideal; Ich würde nur ein Schema für sagen sagen, eine Person Datentyp mit Namen und Nachnamen und Adresse Felder, und rufen Sie dann ein Makro oder Funktion wie (defcrud Person my-person-schema) und es funktioniert, ich kann auf eine Webseite gehen, sehen Sie die Datentabelle, Bearbeiten/Löschen von Daten , und speichern Sie die Daten vollständig auf dem Server.

Meine Frage ist: Gibt es etwas in der Clojure-Welt, das etwas (oder teilweise) wie oben beschrieben tut?

In meinem letzten vollständigen clj/cljs-Projekt habe ich viel Code für dieses grundlegende Zeug geschrieben. In den alten Tagen, als ich ein GWT-Framework namens SmartGWT verwendet, musste ich nur eine new ListGrid(myDataSource) definieren und eine Datenquelle definieren (entspricht dem Schema), und der Rest wurde abgeleitet (zumindest etwas mit vernünftigen Vorgaben war).

Die SmartGWT Art von hohem Entwicklungsgrad ermöglicht echte Rapid-Prototyping für die Art von Business-Apps, die ich oft erstellen muss. GWT hat seine eigenen Nachteile, wie z. B. eine sehr langsame Kompilierungszeit für größere Apps und die Tatsache, dass ich Java schreiben muss, aber es ist die Ebene der Server-Client-Integration, die ich in Clojure sofort suche.

Antwort

3

Disclaimer, ich bin der Autor von Closp-Crud.

Zuerst danke @mac für Hinweise auf meine Bibliothek.

Zweitens, was Sie fragen, ist genau das, was ich erreichen möchte, aber auf eine andere Art und Weise. Ich hasse all die Magie, die passiert, wenn du Sachen wie Schlusscode tust. Also mein Ansatz unterscheidet sich in diesem gesamten Code:

  • html Vorlagen
  • Routen
  • Migrationen
  • db Zugang

erzeugt wird und danach vollständig verändert werden kann.
Natürlich hat das andere Nachteile, aber ich nehme sie gerne.

Das heißt, Dokumentation fehlt noch, ich habe letzte Woche einen Anreiz mit: http://closp.net gestartet und werde weiter daran arbeiten.
Ich könnte genauso gut Docs für Closp-Crud als nächstes hinzufügen, wenn Sie so brauchen.

Abgesehen davon habe ich vor zwei Tagen ein einleitendes Video gemacht: https://www.livecoding.tv/sveri/videos/wrnL1-clojure-closp-webframework-41, das die Verwendung von Closp und Closp-Crud auf sehr einfache Weise zeigt.
Die Verwendung von Closp-Crud beginnt etwa 12 Minuten.

Verwandte Themen