DUCT เป็นเฟรมเวิร์กแบบแยกส่วนสูงสำหรับการสร้างแอปพลิเคชันฝั่งเซิร์ฟเวอร์ใน Clojure โดยใช้สถาปัตยกรรมที่ขับเคลื่อนด้วยข้อมูล
มันมีความคล้ายคลึงกันในขอบเขตของ Arachne และอยู่บนพื้นฐานของ Integrant ท่อสร้างแอปพลิเคชันรอบ ๆ การกำหนดค่าที่ไม่เปลี่ยนรูปซึ่งทำหน้าที่เป็นพิมพ์เขียวโครงสร้าง การกำหนดค่าสามารถจัดการและสอบถามเพื่อสร้างพฤติกรรมที่ซับซ้อน
ดู: UPGRADING.MD
เพื่อสร้างโครงการท่อใหม่กับ Leiningen:
lein new duct < your project name >สิ่งนี้จะสร้างโครงการท่อที่น้อยที่สุด คุณสามารถขยายสิ่งนี้ได้โดยกล่าวถึงคำแนะนำโปรไฟล์เพื่อเพิ่มฟังก์ชั่นพิเศษ
+api เพิ่มมิดเดิลแวร์ API และตัวจัดการ+ataraxy เพิ่มเราเตอร์ ataraxy+cljs เพิ่มในการรวบรวม clojurescript และการโหลดร้อน+example เพิ่มตัวจัดการตัวอย่าง+heroku เพิ่มการกำหนดค่าสำหรับการปรับใช้กับ heroku+postgres เพิ่มการพึ่งพา PostgreSQL และส่วนประกอบฐานข้อมูล+site เพิ่มไซต์มิดเดิลแวร์, favicon, webjars และอื่น ๆ+sqlite เพิ่มการพึ่งพา sqlite และส่วนประกอบฐานข้อมูลตัวอย่างเช่น:
lein new duct foobar +site +example เช่นเดียวกับเทมเพลต Leiningen ทั้งหมดท่อจะสร้างไดเรกทอรีใหม่ที่มีชื่อเดียวกับโครงการของคุณ สำหรับข้อมูลเกี่ยวกับวิธีการเรียกใช้และสร้างโครงการของคุณโปรดดูไฟล์ README.md ของโครงการ
โครงสร้างของแอปพลิเคชันถูกกำหนดโดยแผนที่การกำหนดค่าแบบรวม
ในการพัฒนาท่อใช้เวิร์กโฟลว์การโหลดซ้ำของ Stuart Sierra
ในการผลิตท่อเป็นไปตามวิธีการแอพสิบสองปัจจัย
รัฐท้องถิ่นเป็นที่ต้องการมากกว่ารัฐทั่วโลก
เนมสเปซควรจัดกลุ่มฟังก์ชั่นตามวัตถุประสงค์แทนที่จะเป็นเลเยอร์
ควรใช้โปรโตคอลในการห่อ API ภายนอก
ท่อเพิ่มเลเยอร์ของสิ่งที่เป็นนามธรรมด้านบนของ integrant ใน Integrant แผนที่การกำหนดค่าจะ เริ่มต้น ในแผนที่ระบบที่กำลังทำงานอยู่
┌────────┐ ┌────────┐
│ config ├──>│ system │
└────────┘ └────────┘
ในท่อการกำหนดค่าเริ่มต้นสองครั้ง การกำหนดค่าเริ่มต้นเป็นครั้งแรกในการกำหนดค่าระดับกลางซึ่งจะเริ่มต้นในระบบ:
┌────────┐ ┌──────────────┐ ┌────────┐
│ config ├──>│ intermediate ├──>│ system │
└────────┘ └──────────────┘ └────────┘
ในทำนองเดียวกับฟังก์ชั่นการสั่งซื้อที่สูงขึ้นทำให้เราสามารถใช้รูปแบบทั่วไปของรหัสการกำหนดค่าชั้นของ DUCT ช่วยให้เราสามารถกำหนดรูปแบบทั่วไปของการกำหนดค่าได้
คีย์ในการกำหนดค่าท่อคาดว่าจะเริ่มต้นเป็นฟังก์ชั่นที่แปลงแผนที่การกำหนดค่า มีสองประเภทกว้าง: โปรไฟล์ ซึ่งรวมค่าของพวกเขาเข้ากับการกำหนดค่าและ โมดูล ซึ่งให้การจัดการที่ซับซ้อนมากขึ้น
โครงการท่อมีโครงสร้างดังต่อไปนี้ ไฟล์ที่ทำเครื่องหมายด้วย A * จะถูกเก็บไว้จากการควบคุมเวอร์ชัน
ลิขสิทธิ์© 2021 James Reeves
แจกจ่ายภายใต้ใบอนุญาต MIT