ภาพรวมการพัฒนาปลั๊กอิน
NocoBase ใช้ สถาปัตยกรรมแบบไมโครเคอร์เนล (microkernel architecture) โดยที่ส่วนแกนหลัก (core) มีหน้าที่เพียงแค่จัดการวงจรชีวิตของปลั๊กอิน, การจัดการการพึ่งพา และการห่อหุ้มความสามารถพื้นฐานเท่านั้นครับ/ค่ะ ฟังก์ชันทางธุรกิจทั้งหมดจะถูกจัดเตรียมในรูปแบบของปลั๊กอิน ดังนั้น การทำความเข้าใจโครงสร้างองค์กร, วงจรชีวิต และวิธีการจัดการของปลั๊กอิน จึงเป็นก้าวแรกที่สำคัญในการปรับแต่ง NocoBase ครับ/ค่ะ
แนวคิดหลัก
- เสียบแล้วใช้ได้ทันที (Plug and Play): สามารถติดตั้ง, เปิดใช้งาน หรือปิดใช้งานปลั๊กอินได้ตามต้องการ ช่วยให้สามารถรวมฟังก์ชันทางธุรกิจได้อย่างยืดหยุ่นโดยไม่ต้องแก้ไขโค้ดครับ/ค่ะ
- การทำงานแบบ Full-stack (Full-stack Integration): โดยทั่วไปแล้ว ปลั๊กอินจะมีการทำงานทั้งฝั่งเซิร์ฟเวอร์ (server-side) และฝั่งไคลเอนต์ (client-side) เพื่อให้มั่นใจถึงความสอดคล้องกันระหว่างตรรกะข้อมูลและการโต้ตอบกับส่วนติดต่อผู้ใช้ครับ/ค่ะ
โครงสร้างพื้นฐานของปลั๊กอิน
ปลั๊กอินแต่ละตัวเป็นแพ็กเกจ npm ที่เป็นอิสระ ซึ่งโดยทั่วไปแล้วจะมีโครงสร้างไดเรกทอรีดังนี้ครับ/ค่ะ
plugin-hello/
├─ package.json # ชื่อปลั๊กอิน, การพึ่งพา (dependencies) และเมตาดาต้าของปลั๊กอิน NocoBase
├─ client.js # ไฟล์ที่ได้จากการคอมไพล์ฝั่ง Frontend สำหรับโหลดในขณะรันไทม์
├─ server.js # ไฟล์ที่ได้จากการคอมไพล์ฝั่ง Server-side สำหรับโหลดในขณะรันไทม์
├─ src/
│ ├─ client/ # ซอร์สโค้ดฝั่ง Client-side สามารถลงทะเบียนบล็อก, การดำเนินการ, ฟิลด์ ฯลฯ ได้
│ └─ server/ # ซอร์สโค้ดฝั่ง Server-side สามารถลงทะเบียนทรัพยากร, เหตุการณ์, คำสั่งคอมมานด์ไลน์ ฯลฯ ได้
ข้อกำหนดของไดเรกทอรีและลำดับการโหลด
โดยค่าเริ่มต้น NocoBase จะสแกนไดเรกทอรีต่อไปนี้เพื่อโหลดปลั๊กอินครับ/ค่ะ
my-nocobase-app/
├── packages/
│ └── plugins/ # ปลั๊กอินที่อยู่ระหว่างการพัฒนา (มีความสำคัญสูงสุด)
└── storage/
└── plugins/ # ปลั๊กอินที่คอมไพล์แล้ว เช่น ปลั๊กอินที่อัปโหลดหรือเผยแพร่
packages/plugins: เป็นไดเรกทอรีสำหรับปลั๊กอินที่กำลังพัฒนาในเครื่อง ซึ่งรองรับการคอมไพล์และการดีบักแบบเรียลไทม์ครับ/ค่ะ
storage/plugins: ใช้เก็บปลั๊กอินที่คอมไพล์เรียบร้อยแล้ว เช่น ปลั๊กอินเวอร์ชันเชิงพาณิชย์ หรือปลั๊กอินจากบุคคลที่สามครับ/ค่ะ
วงจรชีวิตและสถานะของปลั๊กอิน
ปลั๊กอินโดยทั่วไปจะผ่านขั้นตอนต่อไปนี้ครับ/ค่ะ
- สร้าง (create): สร้างเทมเพลตปลั๊กอินผ่าน CLI ครับ/ค่ะ
- ดึง (pull): ดาวน์โหลดแพ็กเกจปลั๊กอินลงเครื่อง แต่ยังไม่ได้เขียนลงฐานข้อมูลครับ/ค่ะ
- เปิดใช้งาน (enable): เมื่อเปิดใช้งานครั้งแรก จะดำเนินการ "ลงทะเบียน + เริ่มต้น (register + initialize)" หากเปิดใช้งานอีกครั้ง จะโหลดเฉพาะตรรกะการทำงานเท่านั้นครับ/ค่ะ
- ปิดใช้งาน (disable): หยุดการทำงานของปลั๊กอินครับ/ค่ะ
- ลบ (remove): ลบปลั๊กอินออกจากระบบอย่างถาวรครับ/ค่ะ
TIP
- คำสั่ง
pull มีหน้าที่เพียงแค่ดาวน์โหลดแพ็กเกจปลั๊กอินเท่านั้น ส่วนกระบวนการติดตั้งจริงจะถูกเรียกใช้เมื่อมีการ enable ครั้งแรกครับ/ค่ะ
- หากปลั๊กอินถูก
pull มาแล้ว แต่ยังไม่ได้ถูกเปิดใช้งาน จะไม่ถูกโหลดเข้าสู่ระบบครับ/ค่ะ
ตัวอย่างคำสั่ง CLI
# 1. สร้างโครงสร้างพื้นฐานของปลั๊กอิน
yarn pm create @my-project/plugin-hello
# 2. ดึงแพ็กเกจปลั๊กอิน (ดาวน์โหลดหรือเชื่อมโยง)
yarn pm pull @my-project/plugin-hello
# 3. เปิดใช้งานปลั๊กอิน (จะติดตั้งโดยอัตโนมัติเมื่อเปิดใช้งานครั้งแรก)
yarn pm enable @my-project/plugin-hello
# 4. ปิดใช้งานปลั๊กอิน
yarn pm disable @my-project/plugin-hello
# 5. ลบปลั๊กอิน
yarn pm remove @my-project/plugin-hello
ส่วนติดต่อผู้ใช้สำหรับจัดการปลั๊กอิน
เข้าถึงตัวจัดการปลั๊กอินในเบราว์เซอร์ เพื่อดูและจัดการปลั๊กอินได้อย่างง่ายดายครับ/ค่ะ
URL เริ่มต้น: http://localhost:13000/admin/settings/plugin-manager
