เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
ใน NocoBase นั้น Server Plugin (ปลั๊กอินฝั่งเซิร์ฟเวอร์) เป็นวิธีที่ช่วยให้เราสามารถขยายและปรับแต่งฟังก์ชันการทำงานของฝั่งเซิร์ฟเวอร์ได้อย่างเป็นระบบครับ/ค่ะ นักพัฒนาสามารถสร้างปลั๊กอินได้โดยการสืบทอด (extend) คลาส Plugin จาก @nocobase/server เพื่อลงทะเบียนเหตุการณ์ (events), API, การตั้งค่าสิทธิ์ (permission configurations) และตรรกะที่กำหนดเองอื่น ๆ ในช่วงชีวิต (lifecycle) ต่าง ๆ ของปลั๊กอินได้เลยครับ/ค่ะ
โครงสร้างคลาสปลั๊กอินพื้นฐานมีดังนี้ครับ/ค่ะ:
เมธอดช่วงชีวิตของปลั๊กอินจะทำงานตามลำดับต่อไปนี้ครับ/ค่ะ โดยแต่ละเมธอดก็จะมีช่วงเวลาและวัตถุประสงค์ในการทำงานที่แตกต่างกันไป:
| Lifecycle Method | ช่วงเวลาที่ทำงาน | คำอธิบาย |
|---|---|---|
| staticImport() | ก่อนที่ปลั๊กอินจะโหลด | เป็นเมธอดแบบ static ของคลาสครับ/ค่ะ จะทำงานในช่วงเริ่มต้นที่ยังไม่ขึ้นกับสถานะของแอปพลิเคชันหรือปลั๊กอิน ใช้สำหรับงานเริ่มต้นที่ไม่ต้องพึ่งพาอินสแตนซ์ของปลั๊กอิน |
| afterAdd() | ทำงานทันทีหลังจากปลั๊กอินถูกเพิ่มเข้าสู่ตัวจัดการปลั๊กอิน | ณ จุดนี้ อินสแตนซ์ของปลั๊กอินถูกสร้างขึ้นแล้ว แต่ปลั๊กอินทั้งหมดอาจยังไม่ได้เริ่มต้นทำงานเสร็จสมบูรณ์ครับ/ค่ะ สามารถใช้สำหรับงานเริ่มต้นพื้นฐานได้ |
| beforeLoad() | ทำงานก่อนเมธอด load() ของปลั๊กอินทั้งหมด | ณ จุดนี้ เราสามารถเข้าถึงอินสแตนซ์ของปลั๊กอินที่เปิดใช้งานอยู่ทั้งหมดได้ครับ/ค่ะ เหมาะสำหรับงานเตรียมการ เช่น การลงทะเบียนโมเดลฐานข้อมูล, การดักฟังเหตุการณ์ฐานข้อมูล หรือการลงทะเบียนมิดเดิลแวร์ |
| load() | ทำงานเมื่อปลั๊กอินโหลด | เมธอด load() จะเริ่มทำงานหลังจากที่ beforeLoad() ของปลั๊กอินทั้งหมดทำงานเสร็จสิ้นครับ/ค่ะ เหมาะสำหรับลงทะเบียนทรัพยากร, API, บริการ และตรรกะทางธุรกิจหลักอื่น ๆ |
| install() | ทำงานเมื่อปลั๊กอินถูกเปิดใช้งานครั้งแรก | เมธอดนี้จะทำงานเพียงครั้งเดียวเมื่อปลั๊กอินถูกเปิดใช้งานเป็นครั้งแรกครับ/ค่ะ โดยทั่วไปจะใช้สำหรับตรรกะการติดตั้ง เช่น การเริ่มต้นโครงสร้างตารางฐานข้อมูล หรือการแทรกข้อมูลเริ่มต้น |
| afterEnable() | ทำงานหลังจากปลั๊กอินถูกเปิดใช้งาน | เมธอดนี้จะทำงานทุกครั้งที่ปลั๊กอินถูกเปิดใช้งานครับ/ค่ะ สามารถใช้สำหรับเริ่มงานที่ตั้งเวลาไว้ (scheduled tasks), ลงทะเบียนงานตามแผน หรือสร้างการเชื่อมต่อหลังจากเปิดใช้งาน |
| afterDisable() | ทำงานหลังจากปลั๊กอินถูกปิดใช้งาน | เมธอดนี้จะทำงานเมื่อปลั๊กอินถูกปิดใช้งานครับ/ค่ะ สามารถใช้สำหรับงานทำความสะอาด เช่น การล้างทรัพยากร, หยุดงาน หรือปิดการเชื่อมต่อ |
| remove() | ทำงานเมื่อปลั๊กอินถูกลบ | เมธอดนี้จะทำงานเมื่อปลั๊กอินถูกลบออกอย่างสมบูรณ์ครับ/ค่ะ ใช้สำหรับเขียนตรรกะการถอนการติดตั้ง เช่น การลบตารางฐานข้อมูล หรือการล้างไฟล์ |
| handleSyncMessage(message) | การซิงค์ข้อความในการติดตั้งแบบหลายโหนด | เมื่อแอปพลิเคชันทำงานในโหมดหลายโหนด เมธอดนี้จะใช้สำหรับจัดการข้อความที่ซิงค์มาจากโหนดอื่น ๆ ครับ/ค่ะ |
ลำดับการทำงานทั่วไปของเมธอดช่วงชีวิตมีดังนี้ครับ/ค่ะ:
staticImport()afterAdd() → beforeLoad() → load()afterAdd() → beforeLoad() → load() → install()afterAdd() → beforeLoad() → load()afterDisable() จะทำงานเมื่อปลั๊กอินถูกปิดใช้งานremove() จะทำงานเมื่อปลั๊กอินถูกลบapp และสมาชิกที่เกี่ยวข้องในการพัฒนาปลั๊กอิน เราสามารถเข้าถึง API ต่าง ๆ ที่แอปพลิเคชันมีให้ผ่าน this.app ได้ครับ/ค่ะ ซึ่งเป็นอินเทอร์เฟซหลักสำหรับการขยายฟังก์ชันการทำงานของปลั๊กอิน ออบเจกต์ app จะประกอบด้วยโมดูลฟังก์ชันต่าง ๆ ของระบบ นักพัฒนาสามารถใช้โมดูลเหล่านี้ในเมธอดช่วงชีวิตของปลั๊กอินเพื่อตอบสนองความต้องการทางธุรกิจได้เลยครับ/ค่ะ
app| ชื่อสมาชิก | ประเภท/โมดูล | วัตถุประสงค์หลัก |
|---|---|---|
| logger | Logger | ใช้สำหรับบันทึก Log ของระบบครับ/ค่ะ รองรับการแสดงผล Log ในระดับต่าง ๆ (info, warn, error, debug) เพื่อความสะดวกในการดีบักและตรวจสอบ ดูรายละเอียดเพิ่มเติมที่ Log |
| db | Database | ให้บริการฟังก์ชันที่เกี่ยวข้องกับฐานข้อมูล เช่น การดำเนินการระดับ ORM, การลงทะเบียนโมเดล, การดักฟังเหตุการณ์ และการควบคุม Transaction ดูรายละเอียดเพิ่มเติมที่ ฐานข้อมูล |
| resourceManager | ResourceManager | ใช้สำหรับลงทะเบียนและจัดการทรัพยากร REST API รวมถึงตัวจัดการการดำเนินการต่าง ๆ ดูรายละเอียดเพิ่มเติมที่ การจัดการทรัพยากร |
| acl | ACL | เป็นเลเยอร์ควบคุมการเข้าถึงครับ/ค่ะ ใช้สำหรับกำหนดสิทธิ์, บทบาท และนโยบายการเข้าถึงทรัพยากร เพื่อให้สามารถควบคุมสิทธิ์ได้อย่างละเอียด ดูรายละเอียดเพิ่มเติมที่ การควบคุมสิทธิ์ |
| cacheManager | CacheManager | ใช้สำหรับจัดการแคชระดับระบบครับ/ค่ะ รองรับแบ็กเอนด์แคชหลายประเภท เช่น Redis และ In-memory cache เพื่อเพิ่มประสิทธิภาพของแอปพลิเคชัน ดูรายละเอียดเพิ่มเติมที่ แคช |
| cronJobManager | CronJobManager | ใช้สำหรับลงทะเบียน, เริ่มต้น และจัดการงานที่ตั้งเวลาไว้ (scheduled tasks) ครับ/ค่ะ รองรับการกำหนดค่าด้วย Cron expression ดูรายละเอียดเพิ่มเติมที่ งานที่ตั้งเวลาไว้ |
| i18n | I18n | รองรับการทำให้เป็นสากล (Internationalization) ครับ/ค่ะ มีฟังก์ชันการแปลหลายภาษาและการปรับให้เข้ากับท้องถิ่น เพื่อให้ปลั๊กอินรองรับหลายภาษาได้ง่ายขึ้น ดูรายละเอียดเพิ่มเติมที่ การทำให้เป็นสากล |
| cli | CLI | ใช้สำหรับจัดการอินเทอร์เฟซบรรทัดคำสั่ง (Command-Line Interface) ครับ/ค่ะ สามารถลงทะเบียนและรันคำสั่งที่กำหนดเอง เพื่อขยายฟังก์ชันการทำงานของ NocoBase CLI ดูรายละเอียดเพิ่มเติมที่ บรรทัดคำสั่ง |
| dataSourceManager | DataSourceManager | ใช้สำหรับจัดการอินสแตนซ์ของ แหล่งข้อมูล หลายตัวและการเชื่อมต่อของมันครับ/ค่ะ รองรับสถานการณ์ที่มีหลาย แหล่งข้อมูล ดูรายละเอียดเพิ่มเติมที่ การจัดการแหล่งข้อมูล |
| pm | PluginManager | เป็นตัวจัดการ ปลั๊กอิน ครับ/ค่ะ ใช้สำหรับโหลด, เปิดใช้งาน, ปิดใช้งาน และลบ ปลั๊กอิน แบบไดนามิก รวมถึงจัดการความสัมพันธ์ระหว่าง ปลั๊กอิน ด้วย |
ข้อแนะนำ: สำหรับวิธีการใช้งานโดยละเอียดของแต่ละโมดูล โปรดดูที่บทความเอกสารที่เกี่ยวข้องครับ/ค่ะ