เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
ใน NocoBase, ปลั๊กอินฝั่งไคลเอนต์ (Client Plugin) เป็นวิธีหลักในการขยายและปรับแต่งฟังก์ชันการทำงานของส่วนหน้า (frontend) ครับ/ค่ะ ด้วยการสืบทอด (extend) คลาสพื้นฐาน (base class) ของ Plugin ที่ @nocobase/client จัดเตรียมไว้ให้ นักพัฒนาสามารถลงทะเบียน (register) โลจิก, เพิ่มคอมโพเนนต์หน้าเว็บ, ขยายเมนู หรือผสานรวมฟังก์ชันจากภายนอกได้ในแต่ละช่วงชีวิต (lifecycle) ที่แตกต่างกันครับ/ค่ะ
โครงสร้างปลั๊กอินฝั่งไคลเอนต์พื้นฐานที่สุดมีดังนี้ครับ/ค่ะ
ปลั๊กอินแต่ละตัวจะผ่านช่วงชีวิต (lifecycle) ต่อไปนี้ตามลำดับ เมื่อมีการรีเฟรชเบราว์เซอร์หรือเมื่อแอปพลิเคชันเริ่มต้นทำงานครับ/ค่ะ
| เมธอดช่วงชีวิต (Lifecycle Method) | ช่วงเวลาที่ทำงาน | คำอธิบาย |
|---|---|---|
| afterAdd() | ทำงานทันทีหลังจากเพิ่มปลั๊กอินเข้าสู่ตัวจัดการปลั๊กอิน | ณ จุดนี้ อินสแตนซ์ของปลั๊กอินถูกสร้างขึ้นแล้ว แต่ยังไม่ใช่ปลั๊กอินทั้งหมดที่เริ่มต้นทำงานเสร็จสมบูรณ์ เหมาะสำหรับการเริ่มต้นทำงานแบบเบาๆ เช่น การอ่านค่าคอนฟิกูเรชัน หรือการผูกเหตุการณ์พื้นฐานครับ/ค่ะ |
| beforeLoad() | ทำงานก่อนเมธอด load() ของปลั๊กอินทั้งหมด | สามารถเข้าถึงอินสแตนซ์ของปลั๊กอินที่เปิดใช้งานทั้งหมดได้ (this.app.pm.get()) เหมาะสำหรับโลจิกการเตรียมการที่ต้องพึ่งพาปลั๊กอินอื่นๆ ครับ/ค่ะ |
| load() | ทำงานเมื่อปลั๊กอินโหลด | เมธอดนี้จะทำงานหลังจากเมธอด beforeLoad() ของปลั๊กอินทั้งหมดทำงานเสร็จสมบูรณ์ เหมาะสำหรับการลงทะเบียนเราต์ (routes) ของส่วนหน้า (frontend), คอมโพเนนต์ UI และโลจิกหลักอื่นๆ ครับ/ค่ะ |
ทุกครั้งที่เบราว์เซอร์รีเฟรช เมธอด afterAdd() → beforeLoad() → load() จะถูกเรียกทำงานตามลำดับครับ/ค่ะ
ตั้งแต่ NocoBase 2.0 เป็นต้นไป API สำหรับการขยายฟังก์ชันการทำงานฝั่งไคลเอนต์จะเน้นอยู่ที่ FlowEngine เป็นหลักครับ/ค่ะ ในคลาสของปลั๊กอิน คุณสามารถเข้าถึงอินสแตนซ์ของเอนจินได้ผ่าน this.engine ครับ/ค่ะ
ดูรายละเอียดเพิ่มเติมได้ที่: