Coast เป็นเฟรมเวิร์กเว็บสแต็กเต็มรูปแบบที่เขียนใน Clojure สำหรับทีมเล็ก ๆ หรือนักพัฒนาเดี่ยว ใช้ฐานข้อมูลเชิงสัมพันธ์และแสดงผล HTML บนเซิร์ฟเวอร์โดยไม่ต้องใช้ JavaScript ซึ่งช่วยให้คุณสามารถจัดส่งเว็บแอปพลิเคชันของคุณได้เร็วขึ้น
( 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
อย่าลังเลที่จะถามคำถามเกี่ยวกับช่อง Gitter Coast
มีเอกสารที่ครอบคลุมมากขึ้นที่นี่
หากคุณไม่ต้องการอ่านเอกสารและต้องการกระโดดเข้ามาคุณก็อยู่ในตำแหน่งที่เหมาะสม
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สิ่งนี้จะนำคุณจากการติดตั้งชายฝั่งใหม่ไปยังแอพ Tode List Working
สิ่งแรกที่คุณทำเมื่อคุณเริ่มโครงการชายฝั่ง? 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 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 successfullyCoast ใช้ห้องสมุดภายใต้ประทุนที่เรียกว่า Hiccup เพื่อสร้าง 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 เพื่อดูแอพพลิเคชั่น
ขณะนี้ฉันใช้อะตอมกับ parinfer และคลอรีนเป็นไคลเอนต์ REPL ของฉันลองดูว่าคุณต้องการประสบการณ์ Clojure ที่ราบรื่นหรือไม่
วิ่งครั้งแรก REPL SOCKET SERVER:
make replจากนั้นในตัวแก้ไขของคุณให้เชื่อมต่อกับเซิร์ฟเวอร์ Repl
ในอะตอมกับคลอรีนตัวอย่างเช่น:
กด space + c เติมพอร์ตด้วย 5555 แล้วกด Enter
หลังจากที่คุณเชื่อมต่อให้โหลดไฟล์ server.clj ด้วย Chlorine: Load File
สุดท้ายย้ายเคอร์เซอร์ของคุณไปที่ (-main) และประเมินด้วย Cmd+Enter
นำทางไปที่ http: // localhost: 1337/todos และตรวจสอบงานฝีมือของคุณ
เวอร์ชันแบบอ่านอาจปะทะกันขึ้นอยู่กับการตั้งค่าของคุณ คุณอาจต้องดาวน์เกรดเป็น readline รุ่นล่างขึ้นอยู่กับ Clojure เวอร์ชันของคุณ ตัวอย่างเช่น ... readline เวอร์ชัน 7.0 สำหรับ Clojure 1.9
ยินดีต้อนรับการบริจาคใด ๆ ! ส่ง PR และเข้ามารวมกันกันเถอะ!
Coast on Clojure เปิดตัวภายใต้ใบอนุญาต MIT