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许可发布。