Dies ist ein Demo -Repository für Fulcro Rad. Es enthält ein freigegebenes Quellverzeichnis von Dateien, die jedem Projekt gemeinsam sind, und dann separate Quellverzeichnisse mit spezifischen Dateien, die für die Arbeit mit bestimmten Back-End-Technologien (derzeit SQL und Datomic) erforderlich sind.
Wichtig | Login ist [email protected] mit Passwort letmein . |
Notiz | Pathom 3 wird unterstützt. Die pathom3 -Zweigstelle finden Sie stattdessen für eine Version, die diese Version verwendet. Diese Zweigstelle wird zusammengeführt, sobald P3 als produktionsbereit angesehen wird. |
RAD ist eine Reihe von Bibliotheken für Fulcro, bei denen Sie Ihre Daten über Attribute modellieren. Ein Attribut ist eine Beschreibung einer Tatsache in Ihrem Datenmodell, die selbst Beschleunigungsdaten (ALA RDF) haben kann. Fuldkomponenten können auch Datenattribute erhalten. Die Kombination von kommentierenden Komponenten und dem Datenmodell führt zu einigen großen Synergien, da Fullcro selbst bereits die UI -Komponenten am globalen Datenmodell Ihrer Anwendung beteiligt.
Das Ergebnis ist ein System, bei dem eine Gruppe von Attributen genutzt werden kann, um automatisch zu erstellen:
Datenbankschema
Networking -APIs
Dokumentation
UIS, die genau das ziehen, was sie brauchen
Anwendungen, die ihre clientseitigen Daten automatisch ormalieren
Bildung und Berichtserstellung
Föderierte Datenmodi, bei denen eine Gruppe von Attributen tatsächlich an unterschiedlichen Stellen unter unterschiedlicher Kontrolle leben kann.
und viel mehr.
RAD enthält eine Reihe von Funktionen, die ich in jedem neuen Produktionsprojekt mit Fulcro empfehlen würde. Diese Demo ist eine gute Referenz dafür, wie ein solches Projekt eingerichtet wird. RAD ändert sich jedoch rasant, so dass diese Demo möglicherweise etwas veraltet ist. Dies ist kein Vorlagenprojekt pro SE, aber der rad-Ansatz zum Entwerfen Ihres Datenmodells über Attribute, die dann genutzt werden können, um einen Großteil Ihres Boilerplate-Codes zu generieren, ist in allen Entwicklungsstadien sehr nützlich und leistungsfähig.
Die Demo sollte für einen Anfänger relativ einfach sein, um zu verstehen und zu basteln, und ich hoffe, dass es Sie dazu inspiriert, mehr über Fulcro im Allgemeinen zu erfahren. Wenn Sie jedoch keinen Fuklcro verstehen, werden Sie sehr schnell auf Schwierigkeiten stoßen.
Anfänger sollten daher anhand von Beispielen aus dem Entwicklerhandbuch oder sogar dem Standard-Https://github.com/fulcrologic/fulcro-template beginnen . RAD beseitigt nicht die Notwendigkeit, die Kernbibliothek zu verstehen. RAD ist einfach einige Makros und Muster, die Fulde nutzen.
Die SQL -Version hat einige bekannte Fehler. Wenn Sie mit RAD spielen möchten, verwenden Sie den Datomic Database Adapter vorerst.
Nein, die allgemeinen Front-End-Elemente von Rad könnten von einer Datenquelle angetrieben werden. Die Hauptanforderung besteht darin, dass eine Fulde "Fernbedienung" existiert, die eine EQL -Schnittstelle unterstützen kann. Es ist trivial, eine Fernbedienung zu erstellen, die alles von einer SQL -Datenbank auf einem Server bis zum Browser LocalStorage verwendet.
Sie müssen die CLJS -Quelle zum Ausführen des Clients zusammenstellen. Wenn Sie es bearbeiten möchten, starten Sie einfach eine Schatten-ClJs-Uhr:
$ yarn
$ shadow-cljs watch main Wenn Sie kein yarn haben, verwenden Sie stattdessen npm install .
Die in der Demo verwendete Datomische Datenbank ist datomic lokal. Es verwendet eine In-Memory-Datenbank, mit der das Schreiben einer einfach zu vereitenden Demo einfach ist. Verwenden Sie: Um die WebApp in Datomic zu starten, verwenden Sie:
$ clj -A:dev:datomic
user= > (clojure.core/require ' development)
user=> (development/go) Dadurch wird die Datenbank gesät und den Webserver startet. Der development enthält Helfer zum Anhalten/Starten und Neustarten (mit Code-Reload) des serverseitigen Codes.
Der Beispielcode sollte mit den meisten SQL-Datenbanken arbeiten (und standardmäßig ein In-Memory-H2-DB). Die Datenquelle ist in der Konfigurationsdatei von defaults.edn im SQL -Quellverzeichnis konfiguriert. Siehe Dokumentation von Hikaricp Connection Pool.
Das SQL -Beispiel enthält einen benutzerdefinierten development im src/sql -Quellordner sowie Komponenten, die für den Ausführen dieses Servers benötigt werden.
Sie können die serverseitige Version für SQL mit den DEPS-Aliase starten, mit denen der richtige Klassenpfad eingerichtet ist:
$ clj -A:dev:sql
user= > (clojure.core/require ' development)
user=> (development/go) Der Beispielcode für XTDB -Komponenten befindet sich im Ordner src/xtdb zusammen mit einer benutzerdefinierten development.clj . XTDB-Knoten werden durch eine Karte unter :roterski.fulcro.rad.database-adapters.xtdb/databases in defaults.edn konfiguriert.
Sie können es mit dem :xtdb DEPS -Alias ausführen:
$ clj -A:dev:xtdb
user= > (clojure.core/require ' development)
user=> (development/go) Der Beispielcode für Asami -Komponenten befindet sich im Ordner src/asami sowie eine benutzerdefinierte development.clj . Asami wird durch eine Karte unter ::cz.holyjak.rad.database-adapters.asami/databases in defaults.edn konfiguriert.
Sie können es mit dem :asami DEPS -Alias ausführen:
$ clj -A:dev:asami
user= > (clojure.core/require ' development)
user=> (development/go) Die development/restart stoppt den Server, lädt die Quelle neu und startet den Server.
Rad verwendet mehrere verschiedene Bibliotheken gleichzeitig. Es ist ideal, dass Sie die Quelle all dieser Quelle überprüfen und Ihre DEPs einrichten, damit Sie auf einmal aus der Quelle von allen rennen können. Möglicherweise möchten Sie auch die set-refresh-dirs im Entwicklungsnamenspace aktualisieren, um auf diese zusätzlichen Quellverzeichnisse in CLJ zu zeigen, damit Sie dort ordnungsgemäß nachladen.
Die sehr aktive Entwicklung, die ich durchführe, nimmt Änderungen an 5 Projekten gleichzeitig vor (Fullcro, Fulcro Rad, Fulcro Rad Datomic, Fulcro Rad SQL und diese Demo). Ich garantiere nicht, dass ich alles in Bezug auf die Versionen in der DEPS -Datei in Synchronisierung behalten werde. Ich persönlich legte die folgenden Aufgaben in meinem obersten Niveau ~/.clojure/deps.edn :
{:aliases {:f3-dev {:override-deps {com.fulcrologic/fulcro {:local/root "/Users/tonykay/fulcrologic/fulcro"
:exclusions [com.taoensso/sente]}}}
:rad-dev {:override-deps {com.fulcrologic/fulcro-rad {:local/root "/Users/username/fulcrologic/fulcro-rad"}
com.fulcrologic/fulcro-rad-sql {:local/root "/Users/username/fulcrologic/fulcro-rad-sql"}
com.fulcrologic/fulcro-rad-semantic-ui {:local/root "/Users/username/fulcrologic/fulcro-rad-semantic-ui"}
com.fulcrologic/fulcro-rad-datomic {:local/root "/Users/username/fulcrologic/fulcro-rad-datomic"
:exclusions [com.datomic/datomic-free]}}}}}so dass ich in Intellij (oder in der Kommandozeile) für alle aus lokalen Quellen aus arbeiten kann. Ich versuche mich daran zu erinnern, Schnappschüsse täglich zu pushen, aber wenn ich vergesse und Sie sehen, dass ein fehlender Symbolfehler oder die Dinge gebrochen sind, ist das mit ziemlicher Sicherheit der Grund.
Das Ausführen von Shadow und CLJ würde so aus der Befehlszeile so aussehen:
# in one terminal
$ shadow-cljs -A:f3-dev:rad-dev watch main
# in another terminal
$ clj -A:dev:f3-dev:rad-dev:datomic In Intellij können Sie einfach sicherstellen, dass Sie mit dem aktuellen Klassenpfad eine CLJ -Reply ausführen und die Kontrollkästchen von Alias und + auf der Registerkarte "Clojure DEPs" einrichten.
Die MIT -Lizenz (MIT) Copyright (C), Fulcrologic, LLC
Die Erlaubnis wird hiermit einer Person, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien (der "Software") erhält, kostenlos erteilt, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte, zu verwenden, zu kopieren, zu modifizieren, zusammenzufassen, zu veröffentlichen, zu veröffentlichen, zu verteilen, zu verteilt, und/oder Kopien der Software zu ermöglichen, um Personen zu beanstanden, an denen die Software zugänglich ist, um die folgenden Bedingungen zu beantragen.
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen haftbar, sei es in einer Vertragsklage, unerbittlich oder auf andere Weise, die sich aus oder im Zusammenhang mit der Software oder anderen Geschäften in der Software ergeben.