Coast ist ein volles Stapel -Web -Framework, das für kleine Teams oder Solo -Entwickler in Clojure geschrieben wurde. Es verwendet eine relationale Datenbank und rendert HTML auf dem Server ohne JavaScript, mit dem Sie Ihre Webanwendungen schneller versenden können.
( ns server
( :require [coast]))
( def routes [[ :get " / " ::home ]])
( defn home [request]
" You're coasting on clojure! " )
( def app ( coast/app { :routes routes}))
( coast/server app { :port 1337 })Schauen Sie sich die nächste Filiale für die Änderungen an, die an der Küste v1.0 kommen.
Fühlen Sie sich frei, Fragen auf dem Küsten -Gitter -Kanal zu stellen.
Hier finden Sie umfassendere Dokumente
Wenn Sie die Dokumente nicht lesen möchten und nur einspringen möchten, sind Sie am richtigen Ort.
brew install clojurecurl -o /usr/local/bin/coast https://raw.githubusercontent.com/coast-framework/coast/master/coast && chmod a+x /usr/local/bin/coastcoast new myapp && cd myappcurl -O https://download.clojure.org/install/linux-install-1.9.0.391.sh
chmod +x linux-install-1.9.0.391.sh
sudo ./linux-install-1.9.0.391.shsudo curl -o /usr/local/bin/coast https://raw.githubusercontent.com/coast-framework/coast/master/coast && sudo chmod a+x /usr/local/bin/coastcoast new myapp && cd myappDies führt Sie von einer frischen Installation an der Küste zu einer funktionierenden Todo -List -App.
Das erste, was Sie tun, wenn Sie ein Küstenprojekt starten? coast new in Ihrem Terminal:
coast new todosDadurch wird ein neuer Ordner im aktuellen Verzeichnis namens "Todos" erzeugt. Lassen Sie uns da reinkommen und sehen, was los ist:
cd todos
tree .Dies zeigt Ihnen das Layout eines Standard -Küstenprojekts:
.
├── Makefile
├── README.md
├── bin
│ └── repl.clj
├── db
│ ├── db.edn
│ └── associations.clj
├── deps.edn
├── env.edn
├── resources
│ ├── assets.edn
│ └── public
│ ├── css
│ │ ├── app.css
│ │ └── tachyons.min.css
│ └── js
│ ├── app.js
│ └── jquery.min.js
├── src
│ ├── components.clj
│ ├── home.clj
│ ├── routes.clj
│ └── server.clj
└── test
└── server_test.cljGeben Sie dies in Ihrem Terminal in Ihr Projektverzeichnis ein
make server und besuchen Sie http://localhost:1337 um die einladende Küste auf der Clojure -Standardseite zu sehen
Dies sollte auch eine SQLite-Datenbank mit dem Namen der in db.edn und der COAST_ENV oder :coast-env Umgebungsvariablen definierten Datenbank in env.edn erstellen.
Jetzt, da die Datenbank erstellt wird, generieren wir eine Migration:
coast gen migration create-table-todo name:text finished:bool
# db/migrations/20190926190239_create_table_todo.clj created Dadurch wird in diesem Fall eine Datei in db/migrations mit einem Zeitstempel und jedem Namen erstellt, den Sie angegeben haben: create_table_todo
( ns migrations.20190926190239-create-table-todo
( :require [coast.db.migrations :refer :all ]))
( defn change []
( create-table :todo
( text :name )
( bool :finished )
( timestamps )))Dies ist Clojure, nicht SQL, obwohl einfache SQL -Migrationen gut funktionieren würden. Zeit, diese Migration auf die Datenbank anzuwenden:
make db/migrate
# clj -m coast.migrations migrate
#
# -- Migrating: 20190310121319_create_table_todo ---------------------
#
# create table todo ( id integer primary key, name text, finished boolean, updated_at timestamp, created_at timestamp not null default current_timestamp )
#
# -- 20190310121319_create_table_todo ---------------------
#
# 20190310121319_create_table_todo migrated successfully Dies aktualisiert das Datenbankschema mit einer todo -Tabelle. Zeit, um zum Clojure -Code zu übergehen.
Nachdem die Datenbank migriert wurde, kommen die Generatoren der Küste ins Spiel. Anstatt dass Sie alles von Hand ausgeben und Dokumente lesen müssen, sind die Generatoren eine Möglichkeit, Ihnen den Einstieg zu erlangen, und Sie können anpassen, was Sie von dort aus benötigen.
Dadurch wird eine Datei im src -Verzeichnis mit dem Namen einer Tabelle erstellt. Küste ist ein ziemlich bescheidenes Web -Framework, es gibt keine FRP oder Graph -Abfragesprachen oder irgendetwas. Es gibt nur Dateien mit jeweils sieben Funktionen: build , create , view , edit , change , delete und index .
coast gen code todo
# src/todo.clj created successfullyCoast verwendet eine Bibliothek unter der Haube namens Hiccup, um HTML zu generieren.
Eine Sache, die Coast noch nicht tut, ist die Aktualisierung der Routes -Datei. Lassen Sie uns das jetzt tun:
( ns routes
( :require [coast]))
( def routes
( coast/site
( coast/with-layout :components/layout
[ :get " / " :home/index ]
[ :resource :todo ]))) ; add this line Die Routen sind auch Clojure -Vektoren, wobei jedes Element der Route angibt, welche HTTP -Methode, URL und Funktion zusammen mit einem optionalen Routennamen, wenn Ihnen der namespace / function nicht gefällt.
[:resource :todo] legt grundlegende CRUD -Routen in einer Zeile ein.
Schauen wir es uns vom Terminal aus. Führen Sie das aus
make server und besuchen Sie http://localhost:1337/todos um die App in Aktion anzuzeigen.
Ich verwende Atom derzeit mit Parinfer und Chlor als Repl -Client.
Erster Ausführen, der Replyket -Server:
make replSchließen Sie dann in Ihrem Editor eine Verbindung zum Repl -Server her.
In Atom mit Chlor zum Beispiel:
Drücken Sie space + c , füllen Sie den Port mit 5555 aus und drücken Sie Enter .
Laden Sie die Datei server.clj mit Chlorine: Load File server.clj.
Bewegen Sie Ihren Cursor schließlich in (-main) und bewerten Sie mit Cmd+Enter .
Navigieren Sie zu http: // localhost: 1337/todos und schauen Sie sich Ihre Handarbeit an.
Readline -Versionen können je nach Setup zusammenbrechen. Möglicherweise müssen Sie je nach Ihrer Version von Clojure eine niedrigere Version von Readline herabstufen. Zum Beispiel ... Readline Version 7.0 für Clojure 1.9
Jeder Beitrag ist willkommen! Senden Sie eine PR ein und lassen Sie es uns verschmolzen!
Küste auf Clojure wird unter der MIT -Lizenz freigelassen.