Flutist: ลองสร้างเฟรมเวิร์กสำหรับจัดการสถาปัตยกรรมแบบโมดูลาร์ของ Flutter! (feat. Tuist)
(flutist-1pn8eqs9s-seonwookes-projects.vercel.app)เมื่อโปรเจ็กต์ Flutter มีขนาดใหญ่ขึ้น ก็มักจะเลือกทำโมดูลาร์ (แยกแพ็กเกจ) เพื่อประสิทธิภาพในการบิลด์และการแยกเลเยอร์ แต่เมื่อจำนวนโมดูลเพิ่มขึ้น ภาระในการดูแล pubspec.yaml หลายสิบไฟล์ก็เพิ่มตามไปด้วย และการบังคับใช้กฎสถาปัตยกรรมด้วยการรีวิวโค้ดเพียงอย่างเดียวก็ทำได้ยาก
Flutist เป็นเฟรมเวิร์กที่ได้แรงบันดาลใจจาก Tuist ของ iOS ออกแบบมาเพื่อให้สามารถประกาศและจัดการสเปกและกฎของโปรเจ็กต์เป็นโค้ดบนพื้นฐานของ pub workspaces ใน Dart 3.6+
"ทำไมต้อง Flutist?"
-
การตั้งค่าโปรเจ็กต์แบบประกาศ
แทนที่จะแก้ไขpubspec.yamlของแต่ละโมดูลโดยตรง คุณสามารถประกาศเวอร์ชันแพ็กเกจในpackage.dartและประกาศกราฟการพึ่งพาระหว่างโมดูลในproject.dartได้ เมื่อกำหนดครั้งเดียวpubspec.yamlของทุกโมดูลจะถูกซิงก์ด้วยคำสั่งflutist generate -
การบังคับใช้กฎสถาปัตยกรรมแบบอัตโนมัติ
ใน Clean Architecture แม้domainจะอ้างอิงdataโดยตรงหรือเกิด circular dependency ขึ้นpubก็ไม่ได้ห้ามไว้flutistสามารถเปิดใช้strictModeและหากมีการละเมิดกฎ จะขึ้น error ระหว่างgenerateทำให้หลักการที่เคยมีอยู่แค่ในเอกสารหรือการรีวิวโค้ด กลายเป็นกฎที่บังคับใช้ได้จริง -
ความปลอดภัยของชนิดข้อมูลและประสิทธิภาพการทำงาน
แทนการอ้างอิงแพ็กเกจด้วยสตริง รองรับการเติมข้อความอัตโนมัติของ IDE และการตรวจสอบชนิดข้อมูลตอนคอมไพล์ผ่าน accessor ที่สร้างให้อัตโนมัติ นอกจากนี้ยังมีฟีเจอร์ scaffolding สำหรับสร้างโครงสร้างเลเยอร์ที่ใช้ซ้ำหรือ boilerplate เพื่อลดต้นทุนในการตั้งค่าเริ่มต้นให้ต่ำที่สุด -
การปรับแต่งประสบการณ์นักพัฒนาให้เหมาะสมที่สุด
ไม่เพียงรองรับการรันทดสอบแบบขนาน/แยกตามโมดูลเท่านั้น แต่ยังสามารถใช้flutist graphเพื่อตรวจสอบ dependency ของโมดูลที่ซับซ้อนและเชื่อมโยงกันยุ่งเหยิงได้ทันทีแบบภาพในเบราว์เซอร์
โมดูล 4 ประเภทที่รองรับ
clean— Clean Architecture แบบ 3 เลเยอร์ (domain/data/presentation)micro— Microfeature แบบ 5 เลเยอร์ (interface/implementation/testing/tests/example)lite— 4 เลเยอร์ที่ตัดexampleออกจากmicrosimple— แพ็กเกจเดี่ยว (สำหรับยูทิลิตี้ โมเดลที่ใช้ร่วมกัน หรือ app shell)
คำสั่ง CLI
flutist init/create/generate/check/pub/scaffold/test/graphflutist checkใช้ตรวจสอบเฉพาะสถาปัตยกรรมโดยไม่สร้างไฟล์ → สำหรับ CI pipeline- ใช้
flutist graph --openเพื่อดูกราฟ dependency แบบ mermaid ได้ทันทีในเบราว์เซอร์
ลิงก์
- Docs: https://flutist-web.vercel.app/docs
- pub.dev: https://pub.dev/packages/flutist
- GitHub: https://github.com/seonwooke/flutist
หากคุณกำลังมองหาแนวทางสำหรับสถาปัตยกรรม Flutter แบบมัลติโมดูล ขอแนะนำให้ลองนำ flutist ไปใช้ดูครับ หากมีฟีดแบ็กก็จะนำไปปรับปรุงอย่างเต็มที่ ขอบคุณครับ🙏
ยังไม่มีความคิดเห็น