logologo
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
logologo

เริ่มต้นใช้งานฉบับย่อ

ภาพรวมการพัฒนาปลั๊กอิน
การเขียนปลั๊กอินแรกของคุณ
โครงสร้างไดเรกทอรีโปรเจกต์

การพัฒนาฝั่งเซิร์ฟเวอร์

ภาพรวม
ปลั๊กอิน
คอลเลกชัน
การดำเนินการฐานข้อมูล
การจัดการแหล่งข้อมูล
การจัดการทรัพยากร
การควบคุมการเข้าถึง (ACL)
มิดเดิลแวร์
แคช
เหตุการณ์
คอนเท็กซ์คำขอ
สคริปต์การย้ายข้อมูล
ล็อก
การทำให้เป็นสากล (I18n)
คำสั่ง
การจัดการงานที่กำหนดเวลา
การทดสอบ

การพัฒนาฝั่งไคลเอนต์

ภาพรวม
ปลั๊กอิน
คอนเท็กซ์
เราเตอร์
การควบคุมการเข้าถึง (ACL)
การจัดการแหล่งข้อมูล
ทรัพยากร
คำขอ
สไตล์และธีม
ล็อก
การทำให้เป็นสากล (I18n)
การทดสอบ

อื่นๆ

คู่มือการอัปเกรดปลั๊กอิน
รายการภาษา
การจัดการ Dependencies
การสร้าง
Previous Pageภาพรวม
Next Pageคอลเลกชัน
TIP

เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ

#ปลั๊กอิน

ใน NocoBase นั้น Server Plugin (ปลั๊กอินฝั่งเซิร์ฟเวอร์) เป็นวิธีที่ช่วยให้เราสามารถขยายและปรับแต่งฟังก์ชันการทำงานของฝั่งเซิร์ฟเวอร์ได้อย่างเป็นระบบครับ/ค่ะ นักพัฒนาสามารถสร้างปลั๊กอินได้โดยการสืบทอด (extend) คลาส Plugin จาก @nocobase/server เพื่อลงทะเบียนเหตุการณ์ (events), API, การตั้งค่าสิทธิ์ (permission configurations) และตรรกะที่กำหนดเองอื่น ๆ ในช่วงชีวิต (lifecycle) ต่าง ๆ ของปลั๊กอินได้เลยครับ/ค่ะ

#คลาสปลั๊กอิน

โครงสร้างคลาสปลั๊กอินพื้นฐานมีดังนี้ครับ/ค่ะ:

import { Plugin } from '@nocobase/server';

export class PluginHelloServer extends Plugin {
  async afterAdd() {}

  async beforeLoad() {}

  async load() {}

  async install() {}

  async afterEnable() {}

  async afterDisable() {}

  async remove() {}

  async handleSyncMessage(message: Record<string, any>) {}

  static async staticImport() {}
}

export default PluginHelloServer;

#ช่วงชีวิต (Lifecycle)

เมธอดช่วงชีวิตของปลั๊กอินจะทำงานตามลำดับต่อไปนี้ครับ/ค่ะ โดยแต่ละเมธอดก็จะมีช่วงเวลาและวัตถุประสงค์ในการทำงานที่แตกต่างกันไป:

Lifecycle Methodช่วงเวลาที่ทำงานคำอธิบาย
staticImport()ก่อนที่ปลั๊กอินจะโหลดเป็นเมธอดแบบ static ของคลาสครับ/ค่ะ จะทำงานในช่วงเริ่มต้นที่ยังไม่ขึ้นกับสถานะของแอปพลิเคชันหรือปลั๊กอิน ใช้สำหรับงานเริ่มต้นที่ไม่ต้องพึ่งพาอินสแตนซ์ของปลั๊กอิน
afterAdd()ทำงานทันทีหลังจากปลั๊กอินถูกเพิ่มเข้าสู่ตัวจัดการปลั๊กอินณ จุดนี้ อินสแตนซ์ของปลั๊กอินถูกสร้างขึ้นแล้ว แต่ปลั๊กอินทั้งหมดอาจยังไม่ได้เริ่มต้นทำงานเสร็จสมบูรณ์ครับ/ค่ะ สามารถใช้สำหรับงานเริ่มต้นพื้นฐานได้
beforeLoad()ทำงานก่อนเมธอด load() ของปลั๊กอินทั้งหมดณ จุดนี้ เราสามารถเข้าถึงอินสแตนซ์ของปลั๊กอินที่เปิดใช้งานอยู่ทั้งหมดได้ครับ/ค่ะ เหมาะสำหรับงานเตรียมการ เช่น การลงทะเบียนโมเดลฐานข้อมูล, การดักฟังเหตุการณ์ฐานข้อมูล หรือการลงทะเบียนมิดเดิลแวร์
load()ทำงานเมื่อปลั๊กอินโหลดเมธอด load() จะเริ่มทำงานหลังจากที่ beforeLoad() ของปลั๊กอินทั้งหมดทำงานเสร็จสิ้นครับ/ค่ะ เหมาะสำหรับลงทะเบียนทรัพยากร, API, บริการ และตรรกะทางธุรกิจหลักอื่น ๆ
install()ทำงานเมื่อปลั๊กอินถูกเปิดใช้งานครั้งแรกเมธอดนี้จะทำงานเพียงครั้งเดียวเมื่อปลั๊กอินถูกเปิดใช้งานเป็นครั้งแรกครับ/ค่ะ โดยทั่วไปจะใช้สำหรับตรรกะการติดตั้ง เช่น การเริ่มต้นโครงสร้างตารางฐานข้อมูล หรือการแทรกข้อมูลเริ่มต้น
afterEnable()ทำงานหลังจากปลั๊กอินถูกเปิดใช้งานเมธอดนี้จะทำงานทุกครั้งที่ปลั๊กอินถูกเปิดใช้งานครับ/ค่ะ สามารถใช้สำหรับเริ่มงานที่ตั้งเวลาไว้ (scheduled tasks), ลงทะเบียนงานตามแผน หรือสร้างการเชื่อมต่อหลังจากเปิดใช้งาน
afterDisable()ทำงานหลังจากปลั๊กอินถูกปิดใช้งานเมธอดนี้จะทำงานเมื่อปลั๊กอินถูกปิดใช้งานครับ/ค่ะ สามารถใช้สำหรับงานทำความสะอาด เช่น การล้างทรัพยากร, หยุดงาน หรือปิดการเชื่อมต่อ
remove()ทำงานเมื่อปลั๊กอินถูกลบเมธอดนี้จะทำงานเมื่อปลั๊กอินถูกลบออกอย่างสมบูรณ์ครับ/ค่ะ ใช้สำหรับเขียนตรรกะการถอนการติดตั้ง เช่น การลบตารางฐานข้อมูล หรือการล้างไฟล์
handleSyncMessage(message)การซิงค์ข้อความในการติดตั้งแบบหลายโหนดเมื่อแอปพลิเคชันทำงานในโหมดหลายโหนด เมธอดนี้จะใช้สำหรับจัดการข้อความที่ซิงค์มาจากโหนดอื่น ๆ ครับ/ค่ะ

#ลำดับการทำงาน

ลำดับการทำงานทั่วไปของเมธอดช่วงชีวิตมีดังนี้ครับ/ค่ะ:

  1. ช่วงเริ่มต้นแบบ Static: staticImport()
  2. ช่วงเริ่มต้นแอปพลิเคชัน: afterAdd() → beforeLoad() → load()
  3. ช่วงเปิดใช้งานปลั๊กอินครั้งแรก: afterAdd() → beforeLoad() → load() → install()
  4. ช่วงเปิดใช้งานปลั๊กอินครั้งถัดไป: afterAdd() → beforeLoad() → load()
  5. ช่วงปิดใช้งานปลั๊กอิน: เมธอด afterDisable() จะทำงานเมื่อปลั๊กอินถูกปิดใช้งาน
  6. ช่วงลบปลั๊กอิน: เมธอด remove() จะทำงานเมื่อปลั๊กอินถูกลบ

#app และสมาชิกที่เกี่ยวข้อง

ในการพัฒนาปลั๊กอิน เราสามารถเข้าถึง API ต่าง ๆ ที่แอปพลิเคชันมีให้ผ่าน this.app ได้ครับ/ค่ะ ซึ่งเป็นอินเทอร์เฟซหลักสำหรับการขยายฟังก์ชันการทำงานของปลั๊กอิน ออบเจกต์ app จะประกอบด้วยโมดูลฟังก์ชันต่าง ๆ ของระบบ นักพัฒนาสามารถใช้โมดูลเหล่านี้ในเมธอดช่วงชีวิตของปลั๊กอินเพื่อตอบสนองความต้องการทางธุรกิจได้เลยครับ/ค่ะ

#รายการสมาชิกของ app

ชื่อสมาชิกประเภท/โมดูลวัตถุประสงค์หลัก
loggerLoggerใช้สำหรับบันทึก Log ของระบบครับ/ค่ะ รองรับการแสดงผล Log ในระดับต่าง ๆ (info, warn, error, debug) เพื่อความสะดวกในการดีบักและตรวจสอบ ดูรายละเอียดเพิ่มเติมที่ Log
dbDatabaseให้บริการฟังก์ชันที่เกี่ยวข้องกับฐานข้อมูล เช่น การดำเนินการระดับ ORM, การลงทะเบียนโมเดล, การดักฟังเหตุการณ์ และการควบคุม Transaction ดูรายละเอียดเพิ่มเติมที่ ฐานข้อมูล
resourceManagerResourceManagerใช้สำหรับลงทะเบียนและจัดการทรัพยากร REST API รวมถึงตัวจัดการการดำเนินการต่าง ๆ ดูรายละเอียดเพิ่มเติมที่ การจัดการทรัพยากร
aclACLเป็นเลเยอร์ควบคุมการเข้าถึงครับ/ค่ะ ใช้สำหรับกำหนดสิทธิ์, บทบาท และนโยบายการเข้าถึงทรัพยากร เพื่อให้สามารถควบคุมสิทธิ์ได้อย่างละเอียด ดูรายละเอียดเพิ่มเติมที่ การควบคุมสิทธิ์
cacheManagerCacheManagerใช้สำหรับจัดการแคชระดับระบบครับ/ค่ะ รองรับแบ็กเอนด์แคชหลายประเภท เช่น Redis และ In-memory cache เพื่อเพิ่มประสิทธิภาพของแอปพลิเคชัน ดูรายละเอียดเพิ่มเติมที่ แคช
cronJobManagerCronJobManagerใช้สำหรับลงทะเบียน, เริ่มต้น และจัดการงานที่ตั้งเวลาไว้ (scheduled tasks) ครับ/ค่ะ รองรับการกำหนดค่าด้วย Cron expression ดูรายละเอียดเพิ่มเติมที่ งานที่ตั้งเวลาไว้
i18nI18nรองรับการทำให้เป็นสากล (Internationalization) ครับ/ค่ะ มีฟังก์ชันการแปลหลายภาษาและการปรับให้เข้ากับท้องถิ่น เพื่อให้ปลั๊กอินรองรับหลายภาษาได้ง่ายขึ้น ดูรายละเอียดเพิ่มเติมที่ การทำให้เป็นสากล
cliCLIใช้สำหรับจัดการอินเทอร์เฟซบรรทัดคำสั่ง (Command-Line Interface) ครับ/ค่ะ สามารถลงทะเบียนและรันคำสั่งที่กำหนดเอง เพื่อขยายฟังก์ชันการทำงานของ NocoBase CLI ดูรายละเอียดเพิ่มเติมที่ บรรทัดคำสั่ง
dataSourceManagerDataSourceManagerใช้สำหรับจัดการอินสแตนซ์ของ แหล่งข้อมูล หลายตัวและการเชื่อมต่อของมันครับ/ค่ะ รองรับสถานการณ์ที่มีหลาย แหล่งข้อมูล ดูรายละเอียดเพิ่มเติมที่ การจัดการแหล่งข้อมูล
pmPluginManagerเป็นตัวจัดการ ปลั๊กอิน ครับ/ค่ะ ใช้สำหรับโหลด, เปิดใช้งาน, ปิดใช้งาน และลบ ปลั๊กอิน แบบไดนามิก รวมถึงจัดการความสัมพันธ์ระหว่าง ปลั๊กอิน ด้วย

ข้อแนะนำ: สำหรับวิธีการใช้งานโดยละเอียดของแต่ละโมดูล โปรดดูที่บทความเอกสารที่เกี่ยวข้องครับ/ค่ะ