Coast是一個完整的堆棧網絡框架,該框架用Clojure為小型團隊或獨奏開發人員編寫。它使用關係數據庫並在沒有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的更改
隨時在海岸吉特頻道上提出問題。
這裡有更全面的文檔
如果您不想閱讀文檔,而只是想跳入,那麼您就在正確的位置。
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這將使您從新鮮的海岸裝置到工作列表應用程序。
開始海岸項目時要做的第一件事?您的航站樓中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默認頁面上查看熱情的海岸
這還應該創建一個SQLITE數據庫,其名稱db.edn和Coast_Env或COAST_ENV或: env.edn中定義的:coast-env環境變量。
現在創建了數據庫,讓我們生成一個遷移:
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 )))這是Clojure,而不是SQL,儘管平原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代碼了。
既然數據庫已經遷移,這就是海岸發電機的進來。而不是您必須手工鍵入所有內容並隨時閱讀文檔,而是一種使您開始啟動的方式,您可以從那裡自定義所需的東西。
這將在src目錄中創建一個以表格名稱的文件。海岸是一個非常謙虛的網絡框架,沒有FRP或圖查詢語言或任何東西。每個功能只有七個功能: build , create , view , edit , change , delete和index 。
coast gen code todo
# src/todo.clj created successfully海岸使用名為打ic的引擎蓋下的圖書館來產生HTML。
海岸尚未做的一件事是更新路線文件,讓我們現在就這樣做:
( ns routes
( :require [coast]))
( def routes
( coast/site
( coast/with-layout :components/layout
[ :get " / " :home/index ]
[ :resource :todo ]))) ; add this line路由也是clojure向量,路由的每個元素都指示要調用的HTTP方法,URL和函數以及可選的路由名稱,如果您不喜歡namespace / function名稱,則可以使用。
[:resource :todo]在一行中設置基本的CRUD路由。
讓我們從終端檢查一下。運行這個
make server並訪問http://localhost:1337/todos查看應用程序中的應用程序。
我目前將Atom與Parinfer和氯一起用作我的REPP客戶,請檢查一下是否想要光滑的Clojure體驗。
第一次運行,depl插座服務器:
make repl然後在您的編輯器中,連接到REPP服務器。
例如,與氯原子中:
按space + c ,用5555填充端口,然後按Enter 。
連接後,用氯加載server.clj文件Chlorine: Load File 。
最後,將光標移至(-main)並使用Cmd+Enter進行評估。
導航到http:// localhost:1337/todos,然後查看您的手工作品。
讀取版本可能會根據您的設置進行沖突。根據您的Clojure版本,您可能需要降級到較低版本的ReadLine。例如...讀版7.0 for clojure 1.9
歡迎任何貢獻!提交公關,讓我們合併!
Clojure的海岸根據MIT許可發布。