Эта документация была автоматически переведена ИИ.
В NocoBase серверный плагин предоставляет модульный способ расширения и настройки функциональности серверной части. Разработчики могут расширять класс Plugin из @nocobase/server, чтобы регистрировать события, API, конфигурации разрешений и другую пользовательскую логику на различных этапах жизненного цикла.
Базовая структура класса плагина выглядит следующим образом:
Методы жизненного цикла плагина выполняются в следующем порядке. Каждый метод имеет своё определённое время выполнения и назначение:
| Метод жизненного цикла | Время выполнения | Описание |
|---|---|---|
| staticImport() | До загрузки плагина | Статический метод класса, выполняется на этапе инициализации, не зависящем от состояния приложения или плагина. Используется для инициализации, не требующей экземпляра плагина. |
| afterAdd() | Сразу после добавления плагина в менеджер плагинов | Экземпляр плагина уже создан, но не все плагины завершили инициализацию. Можно выполнить базовую инициализацию. |
| beforeLoad() | До вызова метода load() всех плагинов | На этом этапе доступны все активированные экземпляры плагинов. Подходит для регистрации моделей базы данных, прослушивания событий БД, регистрации промежуточного ПО и других подготовительных работ. |
| load() | При загрузке плагина | Выполняется после завершения beforeLoad() всех плагинов. Подходит для регистрации ресурсов, API-интерфейсов, сервисов и другой основной бизнес-логики. |
| install() | При первой активации плагина | Выполняется только один раз при первой активации плагина. Обычно используется для инициализации структуры таблиц базы данных, вставки начальных данных и другой логики установки. |
| afterEnable() | После активации плагина | Выполняется каждый раз при активации плагина. Может использоваться для запуска фоновых задач, регистрации запланированных задач, установки соединений и других действий после активации. |
| afterDisable() | После деактивации плагина | Выполняется при деактивации плагина. Может использоваться для очистки ресурсов, остановки задач, закрытия соединений и других работ по очистке. |
| remove() | При удалении плагина | Выполняется при полном удалении плагина. Используется для написания логики деинсталляции, например, удаления таблиц базы данных, очистки файлов и т. д. |
| handleSyncMessage(message) | Синхронизация сообщений в многоузловой среде | При работе приложения в многоузловом режиме используется для обработки сообщений, синхронизированных с других узлов. |
Типовой порядок выполнения методов жизненного цикла:
staticImport()afterAdd() → beforeLoad() → load()afterAdd() → beforeLoad() → load() → install()afterAdd() → beforeLoad() → load()afterDisable() выполняется при деактивации плагина.remove() выполняется при удалении плагина.При разработке плагинов вы можете получить доступ к различным API, предоставляемым экземпляром приложения, через this.app. Это основной интерфейс для расширения функциональности плагина. Объект app содержит различные функциональные модули системы, и разработчики могут использовать их в методах жизненного цикла плагина для реализации своих бизнес-требований.
| Имя члена | Тип/Модуль | Основное назначение |
|---|---|---|
| logger | Logger | Запись системных логов, поддержка вывода логов различных уровней (info, warn, error, debug) для удобства отладки и мониторинга. Подробнее см. Логирование |
| db | Database | Предоставляет операции ORM-уровня, регистрацию моделей, прослушивание событий, управление транзакциями и другие функции, связанные с базой данных. Подробнее см. База данных. |
| resourceManager | ResourceManager | Используется для регистрации и управления ресурсами REST API и обработчиками операций. Подробнее см. Управление ресурсами. |
| acl | ACL | Уровень контроля доступа, используется для определения разрешений, ролей и политик доступа к ресурсам, реализуя детальный контроль доступа. Подробнее см. Контроль доступа. |
| cacheManager | CacheManager | Управление системным кешем, поддержка различных кеш-бэкендов, таких как Redis, кеш в памяти, для повышения производительности приложения. Подробнее см. Кеширование |
| cronJobManager | CronJobManager | Используется для регистрации, запуска и управления запланированными задачами, поддерживает конфигурацию выражений Cron. Подробнее см. Запланированные задачи |
| i18n | I18n | Поддержка интернационализации, предоставляет функции многоязычного перевода и локализации, что упрощает поддержку нескольких языков плагинами. Подробнее см. Интернационализация |
| cli | CLI | Управление интерфейсом командной строки, регистрация и выполнение пользовательских команд, расширение функциональности CLI NocoBase. Подробнее см. Командная строка |
| dataSourceManager | DataSourceManager | Управление несколькими экземплярами источников данных и их соединениями, поддержка сценариев с несколькими источниками данных. Подробнее см. Управление источниками данных |
| pm | PluginManager | Менеджер плагинов, используется для динамической загрузки, активации, деактивации и удаления плагинов, а также для управления зависимостями между плагинами. |
Примечание: Подробное описание использования каждого модуля см. в соответствующих разделах документации.