Coast adalah kerangka kerja web tumpukan penuh yang ditulis di Clojure untuk tim kecil atau pengembang solo. Ini menggunakan database relasional dan membuat HTML di server tanpa JavaScript yang memungkinkan Anda mengirimkan aplikasi web Anda lebih cepat.
( 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 })Lihat cabang berikutnya untuk perubahan yang datang ke Coast v1.0
Jangan ragu untuk mengajukan pertanyaan di saluran Gitter Coast.
Dokumen yang lebih komprehensif tersedia di sini
Jika Anda tidak ingin membaca dokumen, dan hanya ingin melompat, Anda berada di tempat yang tepat.
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 myappIni akan membawa Anda dari instalasi pantai baru ke aplikasi daftar Todo yang berfungsi.
Hal pertama yang Anda lakukan saat memulai proyek pantai? coast new di terminal Anda:
coast new todosIni akan membuat folder baru di direktori saat ini bernama "Todos". Ayo masuk ke sana dan lihat apa yang terjadi:
cd todos
tree .Ini akan menunjukkan kepada Anda tata letak proyek pantai default:
.
├── 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.cljKetik ini di terminal Anda di direktori proyek Anda
make server dan kunjungi http://localhost:1337 untuk melihat pantai yang ramah di halaman default clojure
Ini juga harus membuat database SQLITE dengan nama database yang ditentukan dalam db.edn dan COAST_ENV atau :coast-env yang didefinisikan dalam env.edn .
Sekarang database dibuat, mari kita hasilkan migrasi:
coast gen migration create-table-todo name:text finished:bool
# db/migrations/20190926190239_create_table_todo.clj created Ini akan membuat file dalam db/migrations dengan cap waktu dan nama apa pun yang Anda berikan, dalam hal ini: 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 )))Ini adalah Clojure, bukan SQL, meskipun migrasi SQL biasa akan bekerja dengan baik. Saatnya menerapkan migrasi ini ke database:
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 Ini memperbarui skema basis data dengan tabel todo . Saatnya pindah ke kode Clojure.
Sekarang setelah database telah dimigrasi, di sinilah generator Coast masuk. Daripada Anda harus mengetik semuanya dengan tangan dan membaca dokumen saat Anda pergi, generator adalah cara untuk memulai dan Anda dapat menyesuaikan apa yang Anda butuhkan dari sana.
Ini akan membuat file di direktori src dengan nama tabel. Coast adalah kerangka kerja web yang sangat sederhana, tidak ada FRP atau Bahasa Permintaan Grafik atau apapun. Hanya ada hanya file dengan tujuh fungsi: build , create , view , edit , change , delete dan index .
coast gen code todo
# src/todo.clj created successfullyCoast menggunakan perpustakaan di bawah kap yang disebut Hiccup untuk menghasilkan HTML.
Satu hal yang belum dilakukan Coast adalah memperbarui file rute, mari kita lakukan sekarang:
( ns routes
( :require [coast]))
( def routes
( coast/site
( coast/with-layout :components/layout
[ :get " / " :home/index ]
[ :resource :todo ]))) ; add this line Rute juga vektor clojure, dengan setiap elemen rute yang menunjukkan metode HTTP, URL, dan fungsi yang harus dihubungi, bersama dengan nama rute opsional jika Anda tidak menyukai nama namespace / function .
[:resource :todo] Mengatur rute CRUD dasar dalam satu baris.
Mari kita periksa dari terminal. Jalankan ini
make server dan kunjungi http://localhost:1337/todos untuk melihat aplikasi beraksi.
Saat ini saya menggunakan atom dengan parinfer dan klorin sebagai klien rept saya, periksa jika Anda menginginkan pengalaman clojure yang halus.
First Run, Server Socket Rept:
make replKemudian di editor Anda, sambungkan ke server repl.
Dalam atom dengan klorin misalnya:
Tekan space + c , isi port dengan 5555 dan tekan Enter .
Setelah Anda terhubung, muat file server.clj dengan Chlorine: Load File .
Akhirnya, pindahkan kursor Anda ke (-main) dan evaluasi dengan Cmd+Enter .
Arahkan ke http: // localhost: 1337/todos dan lihat karya Anda.
Versi readline mungkin berbenturan tergantung pada pengaturan Anda. Anda mungkin perlu menurunkan versi ke versi ReadLine yang lebih rendah tergantung pada versi Clojure Anda. Misalnya ... Readline Versi 7.0 untuk Clojure 1.9
Kontribusi apa pun diterima! Kirim PR dan mari kita gabungkan!
Coast on Clojure dirilis di bawah lisensi MIT.