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 })تحقق من الفرع التالي للتغييرات القادمة إلى الساحل 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سيأخذك هذا من تثبيت ساحل جديد إلى تطبيق قائمة TODO.
أول شيء تفعله عندما تبدأ مشروع الساحل؟ 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.
الآن بعد أن تم ترحيل قاعدة البيانات ، هذا هو المكان الذي تأتي فيه مولدات Coast. بدلاً من الاضطرار إلى كتابة كل شيء باليد وقراءة المستندات كما تذهب ، فإن المولدات هي وسيلة لتبدأ ويمكنك تخصيص ما تحتاجه من هناك.
سيؤدي ذلك إلى إنشاء ملف في دليل src باسم جدول. الساحل هو إطار ويب متواضع ، لا يوجد FRP أو لغات الاستعلام الرسم البياني أو أي شيء. هناك فقط ملفات بها سبع وظائف لكل منها: build ، create ، view ، edit ، change ، delete index .
coast gen code todo
# src/todo.clj created successfullyيستخدم Coast مكتبة أسفل الغطاء تسمى 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 لرؤية التطبيق في العمل.
أستخدم Atom حاليًا مع Parinfer و Chlorine كعميل Reply الخاص بي ، تحقق من ذلك إذا كنت تريد تجربة clojure السلسة.
تشغيل أولا ، خادم مقبس Reply:
make replثم في المحرر الخاص بك ، اتصل بخادم Repl.
في الذرة مع الكلور على سبيل المثال:
اضغط على space + c ، املأ المنفذ بـ 5555 وضغط على Enter .
بعد اتصالك ، قم بتحميل ملف server.clj مع Chlorine: Load File .
أخيرًا ، انقل المؤشر إلى (-main) وتقييم مع Cmd+Enter .
انتقل إلى http: // localhost: 1337/todos وتحقق من أعمالك اليدوية.
قد تصطدم إصدارات ReadLine اعتمادًا على الإعداد الخاص بك. قد تحتاج إلى خفض التصنيف إلى إصدار أقل من ReadLine اعتمادًا على إصدار Clojure الخاص بك. على سبيل المثال ... ReadLine الإصدار 7.0 لـ Clojure 1.9
أي مساهمة مرحب بها! أرسل العلاقات العامة ودعنا ندمجها!
يتم إصدار Coast on Clojure تحت رخصة معهد ماساتشوستس للتكنولوجيا.