Coast는 소규모 팀이나 솔로 개발자를 위해 Clojure로 작성된 풀 스택 웹 프레임 워크입니다. 관계형 데이터베이스를 사용하고 JavaScript없이 서버에서 HTML을 렌더링하여 웹 응용 프로그램을 더 빨리 배송 할 수 있습니다.
( 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이를 통해 새로운 해안 설치에서 Working Todo List 앱으로 이동합니다.
해안 프로젝트를 시작할 때 가장 먼저하는 일은? 터미널의 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 Clojure 기본 페이지에서 환영 해안을 보려면 http://localhost:1337 방문하십시오.
env.edn db.edn 및 COAST_ENV 에 정의 된 데이터베이스 이름이있는 SQLITE 데이터베이스를 만들어야 :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 )))일반 SQL 마이그레이션은 제대로 작동하지만 SQL이 아닌 Clojure입니다. 이 마이그레이션을 데이터베이스에 적용 할 시간 :
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는 꽤 겸손한 웹 프레임 워크이며 FRP 또는 그래프 쿼리 언어 또는 무엇이든. 각각 build , create , view , edit , change , delete 및 index 의 7 가지 기능이있는 파일 만 있습니다.
coast gen code todo
# src/todo.clj created successfullyCoast는 Hiccup이라는 후드 아래 라이브러리를 사용하여 HTML을 생성합니다.
Coast가 아직하지 않는 한 가지는 경로 파일을 업데이트하는 것입니다. 지금하십시오.
( 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 경로를 설정합니다.
터미널에서 확인해 봅시다. 이것을 실행하십시오
make server 앱이 작동하는 것을보기 위해 http://localhost:1337/todos 방문하십시오.
나는 현재 Parinfer와 염소가있는 Atom을 Repl 클라이언트로 사용하고 있으며 부드러운 clojure 경험을 원하면 확인하십시오.
첫 번째 실행, Repl Socket Server :
make repl그런 다음 편집기에서 REPL 서버에 연결하십시오.
염소가있는 원자에서 예를 들어 :
space + c 를 누르고 5555 로 포트를 채우고 Enter 누르십시오.
연결되면 Chlorine: Load File 로 server.clj 파일을로드하십시오.
마지막으로 커서를 (-main) 으로 이동하고 Cmd+Enter 로 평가하십시오.
http : // localhost : 1337/todos로 이동하여 수공예품을 확인하십시오.
readline 버전은 설정에 따라 충돌 할 수 있습니다. Clojure 버전에 따라 더 낮은 버전의 Readline으로 다운 그레이드해야 할 수도 있습니다. 예를 들어 ... Clojure 1.9의 경우 READLINE 버전 7.0입니다
모든 공헌을 환영합니다! PR을 제출하고 합병합시다!
Coast on Clojure는 MIT 라이센스에 따라 출시됩니다.