logologo
البدء
الدليل
التطوير
الإضافات
API
الرئيسية
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
البدء
الدليل
التطوير
الإضافات
API
الرئيسية
logologo

بدء سريع

نظرة عامة على تطوير الإضافات
كتابة الإضافة الأولى
هيكل دليل المشروع

تطوير الواجهة الخلفية

نظرة عامة
Plugin
جداول بيانات Collections
عمليات Database
إدارة مصادر بيانات DataSourceManager
إدارة موارد ResourceManager
التحكم في أذونات ACL
Middleware
Cache
Event
سياق طلب Context
نص ترقية Migration
Logger
Telemetry
I18n (تدويل)
Command (سطر الأوامر)
إدارة المهام المجدولة CronJobManager
Test

تطوير الواجهة الأمامية

نظرة عامة
Plugin
Context (السياق)
Router
التحكم في أذونات ACL
إدارة مصادر بيانات DataSourceManager
Resource
Request
Styles & Themes (الأنماط والمظاهر)
Logger
I18n (تدويل)
Test

أخرى

دليل ترقية الإضافات
قائمة اللغات
إدارة التبعيات
البناء
Previous Pageنظرة عامة
Next Pageجداول بيانات Collections
إشعار الترجمة بالذكاء الاصطناعي

تمت ترجمة هذا المستند بواسطة الذكاء الاصطناعي. للحصول على معلومات دقيقة، يرجى الرجوع إلى النسخة الإنجليزية.

#الإضافة (Plugin)

في NocoBase، توفر إضافة الخادم (Server Plugin) طريقة برمجية معيارية لتوسيع وتخصيص وظائف الخادم. يمكن للمطورين توسيع فئة Plugin من @nocobase/server لتسجيل الأحداث، والواجهات البرمجية (APIs)، وتكوينات الصلاحيات، وغيرها من المنطق المخصص في مراحل دورة الحياة المختلفة.

#فئة الإضافة (Plugin Class)

الهيكل الأساسي لفئة الإضافة هو كما يلي:

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;

#دورة الحياة

يتم تنفيذ طرق دورة حياة الإضافة بالترتيب التالي، ولكل طريقة وقت تنفيذ وغرض محدد:

طريقة دورة الحياةوقت التنفيذالوصف
staticImport()قبل تحميل الإضافةطريقة فئة ثابتة (static)، تُنفذ خلال مرحلة التهيئة المستقلة عن حالة التطبيق أو الإضافة، وتُستخدم لأعمال التهيئة التي لا تعتمد على مثيلات الإضافة.
afterAdd()تُنفذ فور إضافة الإضافة إلى مدير الإضافاتتم إنشاء مثيل الإضافة، ولكن لم تنتهِ جميع الإضافات من التهيئة بعد. يمكن إجراء بعض أعمال التهيئة الأساسية هنا.
beforeLoad()تُنفذ قبل طريقة load() لجميع الإضافاتيمكن في هذه المرحلة الوصول إلى جميع مثيلات الإضافات المفعلة. مناسبة لتسجيل نماذج قاعدة البيانات، والاستماع لأحداث قاعدة البيانات، وتسجيل البرمجيات الوسيطة (middleware)، وغيرها من أعمال التحضير.
load()تُنفذ عند تحميل الإضافةتكتمل طريقة beforeLoad() لجميع الإضافات قبل بدء load(). مناسبة لتسجيل الموارد، وواجهات API، والخدمات، وغيرها من منطق الأعمال الأساسي.
install()تُنفذ عند تفعيل الإضافة لأول مرةتُنفذ مرة واحدة فقط عند تمكين الإضافة لأول مرة، وتُستخدم عادةً لتهيئة هياكل جداول قاعدة البيانات، وإدراج البيانات الأولية، وغيرها من منطق التثبيت.
afterEnable()تُنفذ بعد تمكين الإضافةتُنفذ في كل مرة يتم فيها تمكين الإضافة، ويمكن استخدامها لبدء المهام المجدولة، وتسجيل المهام، وإنشاء الاتصالات، وغيرها من الإجراءات بعد التمكين.
afterDisable()تُنفذ بعد تعطيل الإضافةتُنفذ عند تعطيل الإضافة، ويمكن استخدامها لتنظيف الموارد، وإيقاف المهام، وإغلاق الاتصالات، وغيرها من أعمال التنظيف.
remove()تُنفذ عند حذف الإضافةتُنفذ عند حذف الإضافة تماماً، وتُستخدم لكتابة منطق إلغاء التثبيت، مثل حذف جداول قاعدة البيانات، وتنظيف الملفات، وما إلى ذلك.
handleSyncMessage(message)مزامنة الرسائل في عمليات النشر متعددة العقدعندما يعمل التطبيق في وضع العقد المتعددة، تُستخدم لمعالجة الرسائل المتزامنة من العقد الأخرى.

#شرح ترتيب التنفيذ

تدفق التنفيذ النموذجي لطرق دورة الحياة:

  1. مرحلة التهيئة الثابتة: staticImport()
  2. مرحلة بدء تشغيل التطبيق: afterAdd() ← beforeLoad() ← load()
  3. مرحلة تمكين الإضافة لأول مرة: afterAdd() ← beforeLoad() ← load() ← install()
  4. مرحلة تمكين الإضافة للمرات التالية: afterAdd() ← beforeLoad() ← load()
  5. مرحلة تعطيل الإضافة: يتم تنفيذ afterDisable() عند تعطيل الإضافة.
  6. مرحلة حذف الإضافة: يتم تنفيذ remove() عند حذف الإضافة.

#الكائن app والأعضاء ذوي الصلة

في تطوير الإضافات، يمكنك الوصول إلى مختلف الواجهات البرمجية (APIs) التي يوفرها مثيل التطبيق من خلال this.app؛ وهو الواجهة الأساسية لتوسيع وظائف الإضافة. يحتوي الكائن app على وحدات وظيفية مختلفة للنظام، ويمكن للمطورين استخدام هذه الوحدات في طرق دورة حياة الإضافة لتنفيذ متطلبات الأعمال.

#قائمة أعضاء app

اسم العضوالنوع/الوحدةالغرض الأساسي
loggerLoggerتسجيل سجلات النظام، يدعم مستويات مختلفة (info, warn, error, debug)، مما يسهل عملية التصحيح والمراقبة. راجع السجلات
dbDatabaseيوفر عمليات طبقة ORM، وتسجيل النماذج، والاستماع للأحداث، والتحكم في المعاملات، وغيرها من الوظائف المتعلقة بقاعدة البيانات. راجع قاعدة البيانات.
resourceManagerResourceManagerيُستخدم لتسجيل وإدارة موارد REST API ومعالجات العمليات. راجع إدارة الموارد.
aclACLطبقة التحكم في الوصول، تُستخدم لتعريف الصلاحيات، والأدوار، وسياسات الوصول للموارد، مما يحقق تحكماً دقيقاً في الصلاحيات. راجع التحكم في الصلاحيات.
cacheManagerCacheManagerإدارة التخزين المؤقت على مستوى النظام، يدعم Redis والتخزين المؤقت في الذاكرة وغيرها من وسائط التخزين لتحسين أداء التطبيق. راجع التخزين المؤقت
cronJobManagerCronJobManagerيُستخدم لتسجيل وبدء وإدارة المهام المجدولة، ويدعم تكوين تعبيرات Cron. راجع المهام المجدولة
i18nI18nدعم التدويل، يوفر ترجمة لغات متعددة ووظائف التوطين، مما يسهل على الإضافات دعم لغات متعددة. راجع التدويل
cliCLIإدارة واجهة سطر الأوامر، وتسجيل وتنفيذ الأوامر المخصصة، وتوسيع وظائف NocoBase CLI. راجع سطر الأوامر
dataSourceManagerDataSourceManagerإدارة مثيلات مصادر البيانات المتعددة واتصالاتها، ويدعم سيناريوهات مصادر البيانات المتعددة. راجع إدارة مصدر البيانات
pmPluginManagerمدير الإضافات، يُستخدم لتحميل وتمكين وتعطيل وحذف الإضافات ديناميكياً، وإدارة التبعيات بين الإضافات.

تنبيه: للحصول على تفاصيل استخدام كل وحدة، يرجى الرجوع إلى فصول التوثيق المقابلة.