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

Швидкий старт

Огляд розробки плагінів
Написання першого плагіна
Структура каталогу проєкту

Серверна розробка

Огляд
Плагін (Plugin)
Колекції (таблиці даних)
Операції з базою даних (Database)
Керування джерелами даних (DataSourceManager)
Керування ресурсами (ResourceManager)
Контроль доступу (ACL)
Проміжне ПЗ (Middleware)
Кеш (Cache)
Подія (Event)
Контекст запиту (Context)
Скрипт оновлення (Migration)
Логи (Logger)
Інтернаціоналізація (I18n)
Командний рядок (Command)
Керування завданнями за розкладом (CronJobManager)
Тестування (Test)

Клієнтська розробка

Огляд
Плагін (Plugin)
Контекст (Context)
Маршрутизатор (Router)
Контроль доступу (ACL)
Керування джерелами даних (DataSourceManager)
Ресурс (Resource)
Запит (Request)
Стилі та теми (Styles & Themes)
Логи (Logger)
Інтернаціоналізація (I18n)
Тестування (Test)

Інше

Посібник з оновлення плагінів
Список мов
Керування залежностями
Збірка
Previous PageОгляд
Next PageКолекції (таблиці даних)
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#Плагін

У NocoBase серверний плагін (Server Plugin) надає модульний спосіб розширення та налаштування функціональності серверної частини. Розробники можуть, успадкувавши клас Plugin з @nocobase/server, реєструвати події, API, конфігурації дозволів та іншу власну логіку на різних етапах життєвого циклу.

#Клас плагіна

Базова структура класу плагіна виглядає так:

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()До завантаження плагінаСтатичний метод класу, що виконується на етапі ініціалізації, незалежному від стану застосунку чи плагіна. Використовується для ініціалізації, яка не залежить від екземплярів плагіна.
afterAdd()Виконується відразу після додавання плагіна до менеджера плагінівЕкземпляр плагіна вже створено, але не всі плагіни завершили ініціалізацію. Можна виконати деякі базові ініціалізаційні роботи.
beforeLoad()Виконується перед методом load() усіх плагінівНа цьому етапі Ви можете отримати доступ до всіх увімкнених екземплярів плагінів. Підходить для реєстрації моделей бази даних, прослуховування подій бази даних, реєстрації проміжного програмного забезпечення та інших підготовчих робіт.
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 та пов'язані члени

Під час розробки плагінів Ви можете отримати доступ до різних API, що надаються екземпляром застосунку, через this.app. Це є основним інтерфейсом для розширення функціональності плагіна. Об'єкт app містить різні функціональні модулі системи. Розробники можуть використовувати ці модулі в методах життєвого циклу плагіна для реалізації бізнес-вимог.

#Список членів app

Назва членаТип/МодульОсновне призначення
loggerLoggerЗаписує системні журнали, підтримує виведення журналів різних рівнів (info, warn, error, debug), що зручно для налагодження та моніторингу. Див. Журнали
dbDatabaseНадає операції рівня ORM, реєстрацію моделей, прослуховування подій, контроль транзакцій та інші функції, пов'язані з базою даних. Див. База даних.
resourceManagerResourceManagerВикористовується для реєстрації та управління ресурсами REST API та обробниками операцій. Див. Керування ресурсами.
aclACLРівень контролю доступу, що використовується для визначення дозволів, ролей та політик доступу до ресурсів, реалізуючи детальний контроль дозволів. Див. Контроль доступу (ACL).
cacheManagerCacheManagerКерує кешем системного рівня, підтримує Redis, кеш у пам'яті та інші бекенди кешування для підвищення продуктивності застосунку. Див. Кеш
cronJobManagerCronJobManagerВикористовується для реєстрації, запуску та управління запланованими завданнями, підтримує конфігурацію виразів Cron. Див. Заплановані завдання
i18nI18nПідтримка інтернаціоналізації, надає функції багатомовного перекладу та локалізації, що зручно для плагінів для підтримки кількох мов. Див. Інтернаціоналізація
cliCLIКерує інтерфейсом командного рядка, реєструє та виконує власні команди, розширює функціональність NocoBase CLI. Див. Командний рядок
dataSourceManagerDataSourceManagerКерує кількома екземплярами джерел даних та їх з'єднаннями, підтримує сценарії з кількома джерелами даних. Див. Керування джерелами даних
pmPluginManagerМенеджер плагінів, що використовується для динамічного завантаження, увімкнення, вимкнення, видалення плагінів, а також для керування залежностями між плагінами.

Порада: Детальну інформацію про використання кожного модуля дивіться у відповідних розділах документації.