Coastは、Clojureで小さなチームやソロ開発者向けに書かれたフルスタックWebフレームワークです。リレーショナルデータベースを使用し、JavaScriptを使用してサーバー上でHTMLをレンダリングします。これにより、Webアプリケーションをより速く出荷できるようになります。
( 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 })Coast v1.0に来る変更については、次のブランチをチェックしてください
Coast Gitterチャンネルでお気軽に質問してください。
より包括的なドキュメントはこちらから入手できます
ドキュメントを読みたくない場合、ジャンプしたいだけなら、あなたは正しい場所にいます。
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 myappこれにより、新鮮な海岸のインストールから作業用のTODOリストアプリになります。
海岸プロジェクトを開始するときに最初に行うことは?あなたのターミナルでcoast new :
coast new todosこれにより、「Todos」という名前の現在のディレクトリに新しいフォルダーが作成されます。そこに入って、何が起きているのか見てみましょう。
cd todos
tree .これにより、デフォルトのコーストプロジェクトのレイアウトが表示されます。
.
├── 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.cljプロジェクトディレクトリの端末にこれを入力します
make server http://localhost:1337にアクセスして、Clojureのデフォルトページで歓迎の海岸をご覧ください
これにより、 db.ednおよびCOAST_ENVまたは:coast-env環境変数で定義されたデータベースの名前がenv.ednで定義されたSQLiteデータベースを作成する必要があります。
データベースが作成されたので、移行を生成しましょう。
coast gen migration create-table-todo name:text finished:bool
# db/migrations/20190926190239_create_table_todo.clj createdこれにより、タイムスタンプを使用したdb/migrationsのファイルと、この場合は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 )))SQLではなく、これはClojureですが、SQLの単純な移行は正常に機能します。この移行をデータベースに適用する時間:
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これによりtodoテーブルでデータベーススキーマが更新されます。 Clojureコードに進む時間。
データベースが移行されたので、これがCoastの発電機が登場する場所です。すべてを手で入力してドキュメントを読む必要があります。
これにより、テーブルという名前のsrcディレクトリにファイルが作成されます。 Coastはかなり謙虚なWebフレームワークです、FRPやグラフクエリ言語または何か。それぞれ7つの機能を備えたファイルだけがあります: build 、 create 、 view 、 edit 、 change 、 delete 、 index 。
coast gen code todo
# src/todo.clj created successfullyCoastは、Hiccupと呼ばれるフードの下の図書館を使用してHTMLを生成します。
コーストがまだしていないことの1つは、ルートファイルを更新することです。今すぐやってみましょう。
( ns routes
( :require [coast]))
( def routes
( coast/site
( coast/with-layout :components/layout
[ :get " / " :home/index ]
[ :resource :todo ]))) ; add this lineルートもClojureベクターであり、ルートの各要素は、 namespace / function名が気に入らない場合は、オプションのルート名とともに、呼び出すhttpメソッド、URL、および関数を示します。
[:resource :todo]基本的なCRUDルートを1行でセットアップします。
ターミナルからチェックしてみましょう。これを実行します
make server http://localhost:1337/todosアクセスして、アプリが動作しているのをご覧ください。
私は現在、Parinferと塩素を備えたAtomを私のReplクライアントとして使用しています。スムーズなClojureの体験が必要な場合はチェックしてください。
最初の実行、REPLソケットサーバー:
make repl次に、エディターで、REPLサーバーに接続します。
たとえば、塩素のある原子で:
space + cを押し、 5555でポートに記入し、 Enter押します。
接続したら、 server.cljファイルをChlorine: Load Fileでロードします。
最後に、カーソルを(-main)に移動し、 Cmd+Enterで評価します。
http:// localhost:1337/todosに移動して、手仕事をチェックしてください。
読み取りバージョンは、セットアップに応じて衝突する場合があります。 Clojureのバージョンに応じて、Readlineの低いバージョンにダウングレードする必要がある場合があります。たとえば、Clojure 1.9のReadlineバージョン7.0
どんな貢献も大歓迎です! PRを提出して、合併してみましょう!
Coston on ClojureはMITライセンスの下でリリースされます。