Duct ist ein hochmodulares Framework zum Erstellen von serverseitigen Anwendungen in Clojure mithilfe einer datengesteuerten Architektur.
Es ist ähnlich wie Arachne und basiert auf Integrant. Kanal baut Anwendungen um eine unveränderliche Konfiguration auf, die als strukturelle Blaupause fungiert. Die Konfiguration kann manipuliert und befragt werden, um ein ausgefeiltes Verhalten zu erzeugen.
Siehe: upgrade.md.
Um ein neues Kanalprojekt mit LININGEN zu erstellen:
lein new duct < your project name >Dadurch werden ein minimales Kanalprojekt erstellt. Sie können dies erweitern, indem Sie Profilhinweise anhängen, um zusätzliche Funktionen hinzuzufügen.
+api fügt API Middleware und Handler hinzu+ataraxy fügt den Ataraxy -Router hinzu+cljs fügt ClojureScript-Zusammenstellung und Heißladung hinzu+example fügt einen Beispiel -Handler hinzu+heroku fügt eine Konfiguration für die Bereitstellung für Heroku hinzu+postgres fügt eine PostgreSQL -Abhängigkeits- und Datenbankkomponente hinzu+site fügt Site Middleware, Favicon, WebJars und mehr hinzu+sqlite fügt eine SQLite -Abhängigkeits- und Datenbankkomponente hinzuZum Beispiel:
lein new duct foobar +site +example Wie bei allen LININGEN -Vorlagen erstellt Duct ein neues Verzeichnis mit demselben Namen wie Ihrem Projekt. Informationen zum Ausführen und Erstellen Ihres Projekts finden Sie in der README.md -Datei des Projekts.
Die Struktur der Anwendung wird durch eine Integrant -Konfigurationskarte definiert.
In der Entwicklung verwendet Duct Stuart Sierras neu geladener Workflow.
In der Produktion folgt der Duct der zwölf-Faktor-App-Methodik.
Der lokale Staat wird gegenüber dem globalen Staat bevorzugt.
Namespaces sollten Funktionen nach Zweck und nicht für Schicht gruppieren.
Protokolle sollten verwendet werden, um externe APIs zu wickeln.
Duct fügt eine Abstraktionsschicht über Integrant hinzu. In Integrant wird eine Konfigurationskarte in eine laufende Systemkarte initiiert .
┌────────┐ ┌────────┐
│ config ├──>│ system │
└────────┘ └────────┘
Im Kanal wird die Konfiguration zweimal initiiert. Die Konfiguration wird zunächst in eine Zwischenkonfiguration initiiert, die wiederum in das System initiiert wird:
┌────────┐ ┌──────────────┐ ┌────────┐
│ config ├──>│ intermediate ├──>│ system │
└────────┘ └──────────────┘ └────────┘
Auf die gleiche Weise, wie Funktionen höherer Ordnung es uns ermöglichen, gemeinsame Code-Muster abstrahieren, ermöglichen es uns die geschichteten Konfigurationen von Duct, gemeinsame Konfigurationsmuster abstrahieren.
Es wird erwartet, dass Schlüssel in einer Kanalkonfiguration in Funktionen initiiert werden, die eine Konfigurationskarte verwandeln. Es gibt zwei breite Typen: Profile , die ihren Wert in die Konfiguration verwandeln, und Module , die komplexere Manipulationen bieten.
Kanalprojekte sind wie unten strukturiert. Mit einem * gekennzeichnete Dateien werden außerhalb der Versionskontrolle herausgehalten.
Copyright © 2021 James Reeves
Unter der MIT -Lizenz verteilt.