นี่คือพื้นที่เก็บข้อมูลตัวอย่างสำหรับ Fulcro rad มันมีไดเรกทอรีต้นฉบับที่ใช้ร่วมกันของไฟล์ที่จะเป็นเรื่องธรรมดาสำหรับโครงการใด ๆ จากนั้นแยกไดเรกทอรีต้นทางที่มีไฟล์เฉพาะที่จำเป็นในการทำงานกับเทคโนโลยีแบ็คเอนด์เฉพาะ (ปัจจุบัน SQL และ Datomic)
สำคัญ | เข้าสู่ระบบคือ [email protected] พร้อมรหัสผ่าน letmein |
บันทึก | รองรับ Pathom 3 ดูสาขา pathom3 สำหรับเวอร์ชันที่ใช้เวอร์ชันนั้นแทน สาขานั้นจะถูกรวมเข้าด้วยกันทันทีที่ P3 ได้รับการพิจารณาพร้อมการผลิต |
RAD เป็นชุดของไลบรารีสำหรับ Fulcro ที่ให้คุณจำลองข้อมูลของคุณผ่าน แอตทริบิวต์ แอตทริบิวต์คือคำอธิบายของข้อเท็จจริงในรูปแบบข้อมูลของคุณว่าตัวเองสามารถมีข้อมูล descritive (ALA RDF) ส่วนประกอบของ Fulcro ยังสามารถรับคุณลักษณะข้อมูลได้ การรวมกันของส่วนประกอบคำอธิบายประกอบและรูปแบบข้อมูลนำไปสู่การทำงานร่วมกันที่ยอดเยี่ยมเนื่องจาก Fulcro เองมีส่วนประกอบ UI เข้าร่วมในรูปแบบข้อมูลทั่วโลกของแอปพลิเคชันของคุณ
ผลลัพธ์คือระบบที่กลุ่มของแอตทริบิวต์สามารถใช้ประโยชน์จากการสร้างโดยอัตโนมัติ:
สคีมาฐานข้อมูล
APIs เครือข่าย
เอกสาร
uis ที่ดึงสิ่งที่พวกเขาต้องการ
แอปพลิเคชันที่กำหนดข้อมูลฝั่งไคลเอ็นต์โดยอัตโนมัติ
แบบฟอร์มและการสร้างรายงาน
โหมดข้อมูลแบบสหพันธรัฐซึ่งกลุ่มของแอตทริบิวต์สามารถอาศัยอยู่ในตำแหน่งที่แตกต่างกันภายใต้การควบคุมที่แตกต่างกัน
และอีกมากมาย
RAD มีคุณสมบัติมากมายที่ฉันอยากจะแนะนำในโครงการผลิตใหม่โดยใช้ Fulcro การสาธิตนี้เป็นข้อมูลอ้างอิงที่ดีสำหรับวิธีการตั้งค่าโครงการดังกล่าว อย่างไรก็ตาม RAD กำลังเปลี่ยนแปลงอย่างรวดเร็วดังนั้นระวังว่าการสาธิตนี้ อาจ ล้าสมัย นี่ไม่ใช่โครงการเทมเพลตต่อการเลือก แต่วิธีการ RAD ในการออกแบบโมเดลข้อมูลของคุณผ่านแอตทริบิวต์ที่สามารถใช้ประโยชน์จากการสร้างรหัสหม้อไอน้ำจำนวนมากของคุณมีประโยชน์และทรงพลังในทุกขั้นตอนของการพัฒนา
การสาธิตควรจะค่อนข้างง่ายสำหรับแม้แต่ผู้เริ่มต้นที่จะเข้าใจและคนจรจัดด้วยและฉันหวังว่ามันจะทำหน้าที่สร้างแรงบันดาลใจให้คุณเรียนรู้เพิ่มเติมเกี่ยวกับ Fulcro โดยทั่วไป อย่างไรก็ตามหากคุณไม่เข้าใจ Fulcro คุณก็จะประสบปัญหาอย่างรวดเร็ว
ผู้เริ่มต้นควรเริ่มต้นด้วยการเรียนรู้ Core Fulcro ผ่านตัวอย่างจากคู่มือนักพัฒนาหรือแม้แต่ https://github.com/fulcrologic/fulcro-template มาตรฐาน RAD ไม่ได้ ขจัดความจำเป็นที่จะต้องเข้าใจห้องสมุดหลัก RAD เป็นเพียงแมโครและรูปแบบที่ใช้ประโยชน์จาก Fulcro
เวอร์ชัน SQL มีข้อบกพร่องที่รู้จักกันบ้าง หากคุณต้องการเล่นกับ RAD ให้ใช้อะแดปเตอร์ฐานข้อมูล Datomic ในตอนนี้
ไม่มีองค์ประกอบส่วนหน้าทั่วไปของ RAD สามารถขับเคลื่อนโดยแหล่งข้อมูลใด ๆ ข้อกำหนดหลักคือมีอยู่ "ระยะไกล" Fulcro ซึ่งสามารถรองรับอินเทอร์เฟซ EQL ได้ มันเป็นเรื่องเล็กน้อยที่จะสร้างรีโมทที่ใช้อะไรก็ได้จากฐานข้อมูล SQL บนเซิร์ฟเวอร์ไปยังเบราว์เซอร์ localStorage
คุณต้องรวบรวมแหล่งที่มาของ CLJS เพื่อเรียกใช้ไคลเอนต์ หากคุณต้องการที่จะแก้ไขได้เพียงแค่เริ่มนาฬิกา Shadow-Cljs:
$ yarn
$ shadow-cljs watch main หากคุณไม่มี yarn ให้ใช้ npm install แทน
ฐานข้อมูล Datomic ที่ใช้ในการสาธิตคือ Datomic Local มันใช้ฐานข้อมูลในหน่วยความจำซึ่งทำให้การเขียนการสาธิตง่าย ๆ ง่ายๆ หากต้องการเริ่มต้น WebApp ใน Datomic ให้ใช้:
$ clj -A:dev:datomic
user= > (clojure.core/require ' development)
user=> (development/go) สิ่งนี้จะทำให้ฐานข้อมูลและเริ่มต้นเว็บเซิร์ฟเวอร์ เนมสเปซ development รวมถึงผู้ช่วยสำหรับการหยุด/เริ่มต้นและรีสตาร์ท (พร้อมรหัสซ้ำ) รหัสฝั่งเซิร์ฟเวอร์
รหัสตัวอย่างควรทำงานกับฐานข้อมูล SQL ส่วนใหญ่ (และค่าเริ่มต้นในการใช้ H2 dB ในหน่วยความจำในหน่วยความจำ) แหล่งข้อมูลถูกกำหนดค่าในไฟล์กำหนดค่า defaults.edn ในไดเรกทอรี SQL Source ดูเอกสารประกอบการเชื่อมต่อ Hikaricp
ตัวอย่าง SQL มีเนมสเปซ development ที่กำหนดเองในโฟลเดอร์ src/sql Source พร้อมกับส่วนประกอบที่จำเป็นในการเรียกใช้เซิร์ฟเวอร์นั้น
คุณสามารถเริ่มต้นเวอร์ชันฝั่งเซิร์ฟเวอร์สำหรับ SQL โดยใช้นามแฝง DEPS ที่ตั้งค่า ClassPath ที่เหมาะสม:
$ clj -A:dev:sql
user= > (clojure.core/require ' development)
user=> (development/go) รหัสตัวอย่างสำหรับส่วนประกอบ XTDB อยู่ในโฟลเดอร์ src/xtdb พร้อมกับ development.clj ที่กำหนดเอง clj โหนด XTDB ได้รับการกำหนดค่าโดยแผนที่ภายใต้ :roterski.fulcro.rad.database-adapters.xtdb/databases ใน defaults.edn
คุณสามารถเรียกใช้ด้วย :xtdb deps นามแฝง:
$ clj -A:dev:xtdb
user= > (clojure.core/require ' development)
user=> (development/go) รหัสตัวอย่างสำหรับส่วนประกอบ ASAMI อยู่ในโฟลเดอร์ src/asami พร้อมกับ development.clj ที่กำหนดเอง clj Asami ได้รับการกำหนดค่าโดยแผนที่ภายใต้ ::cz.holyjak.rad.database-adapters.asami/databases ใน defaults.edn
คุณสามารถเรียกใช้ด้วย :asami Deps นามแฝง:
$ clj -A:dev:asami
user= > (clojure.core/require ' development)
user=> (development/go) development/restart จะหยุดเซิร์ฟเวอร์แหล่งโหลดซ้ำและเริ่มเซิร์ฟเวอร์
RAD ใช้ไลบรารีที่แตกต่างกันหลายครั้งในครั้งเดียว มันเหมาะอย่างยิ่งที่คุณจะตรวจสอบแหล่งที่มาของทั้งหมดและตั้งค่า deps ของคุณเพื่อให้คุณสามารถเรียกใช้จากแหล่งที่มาของพวกเขาทั้งหมดในครั้งเดียว คุณอาจต้องการอัปเดต set-refresh-dirs ในเนมสเปซการพัฒนาเพื่อชี้ไปที่ไดเรกทอรีแหล่งข้อมูลเพิ่มเติมเหล่านั้นใน CLJ เพื่อให้คุณได้โหลดที่เหมาะสม
การพัฒนาที่ใช้งานอยู่ อย่างมาก ที่ฉันกำลังทำจะเปลี่ยนแปลงโครงการ 5 โครงการในครั้งเดียว (Fulcro, Fulcro Rad, Fulcro Rad Datomic, Fulcro Rad SQL และการสาธิตนี้) ฉันไม่รับประกันว่าฉันจะเก็บทุกอย่างไว้ให้ซิงค์เท่าที่เวอร์ชันในไฟล์ DEPS ไป ฉันตั้งค่าต่อไปนี้ในระดับบนสุดของฉัน ~/.clojure/deps.edn :
{:aliases {:f3-dev {:override-deps {com.fulcrologic/fulcro {:local/root "/Users/tonykay/fulcrologic/fulcro"
:exclusions [com.taoensso/sente]}}}
:rad-dev {:override-deps {com.fulcrologic/fulcro-rad {:local/root "/Users/username/fulcrologic/fulcro-rad"}
com.fulcrologic/fulcro-rad-sql {:local/root "/Users/username/fulcrologic/fulcro-rad-sql"}
com.fulcrologic/fulcro-rad-semantic-ui {:local/root "/Users/username/fulcrologic/fulcro-rad-semantic-ui"}
com.fulcrologic/fulcro-rad-datomic {:local/root "/Users/username/fulcrologic/fulcro-rad-datomic"
:exclusions [com.datomic/datomic-free]}}}}}ดังนั้นใน Intellij (หรือที่บรรทัดคำสั่ง) ฉันสามารถทำงานจากแหล่งท้องถิ่นสำหรับพวกเขาทั้งหมด ฉันพยายามจำไว้ว่าให้กดสแน็ปช็อตทุกวัน แต่ถ้าฉันลืมและคุณเห็นข้อผิดพลาดของสัญลักษณ์ที่ขาดหายไปหรือสิ่งต่าง ๆ ก็เสียนั่นเป็นเหตุผลว่าทำไม
Running Shadow และ CLJ จะเป็นแบบนี้จากบรรทัดคำสั่ง:
# in one terminal
$ shadow-cljs -A:f3-dev:rad-dev watch main
# in another terminal
$ clj -A:dev:f3-dev:rad-dev:datomic ใน Intellij คุณเพียงแค่ตรวจสอบให้แน่ใจว่าได้เรียกใช้ CLJ REPL ด้วย classpath ปัจจุบันและใช้ช่องทำเครื่องหมายนามแฝงและปุ่ม + ในแท็บ Clojure deps เพื่อตั้งค่า
ลิขสิทธิ์ MIT (MIT) (C), Fulcrologic, LLC
ได้รับอนุญาตโดยไม่ต้องเสียค่าใช้จ่ายสำหรับบุคคลใด ๆ ที่ได้รับสำเนาซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") เพื่อจัดการในซอฟต์แวร์โดยไม่มีการ จำกัด รวมถึง แต่ไม่ จำกัด เฉพาะสิทธิ์ในการใช้สำเนาดัดแปลงผสานเผยแพร่เผยแพร่
ประกาศลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์มีให้ "ตามสภาพ" โดยไม่มีการรับประกันใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เฉพาะการรับประกันความสามารถในการค้าการออกกำลังกายสำหรับวัตถุประสงค์เฉพาะและการไม่เข้าร่วม ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดชอบต่อการเรียกร้องความเสียหายหรือความรับผิดอื่น ๆ ไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ ที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือการติดต่ออื่น ๆ ในซอฟต์แวร์