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

Быстрый старт

Обзор разработки плагинов
Создание первого плагина
Структура каталогов проекта

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

Обзор
Плагин
Коллекции (таблицы данных)
Операции с базой данных
Управление источниками данных (DataSourceManager)
Управление ресурсами (ResourceManager)
Контроль доступа (ACL)
Промежуточное ПО (Middleware)
Кэш
Событие
Контекст запроса
Миграции
Логгер
Интернационализация (I18n)
Командная строка
Управление задачами Cron (CronJobManager)
Тестирование

Клиентская разработка

Обзор
Плагин
Контекст
Маршрутизатор
Контроль доступа (ACL)
Управление источниками данных (DataSourceManager)
Ресурс
Запрос
Стили и темы
Логгер
Интернационализация (I18n)
Тестирование

Прочее

Руководство по обновлению плагинов
Список языков
Управление зависимостями
Сборка
Previous PageОбзор
Next PageКоллекции (таблицы данных)
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Плагин

В NocoBase серверный плагин предоставляет модульный способ расширения и настройки функциональности серверной части. Разработчики могут расширять класс 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() всех плагинов. Подходит для регистрации ресурсов, 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Уровень контроля доступа, используется для определения разрешений, ролей и политик доступа к ресурсам, реализуя детальный контроль доступа. Подробнее см. Контроль доступа.
cacheManagerCacheManagerУправление системным кешем, поддержка различных кеш-бэкендов, таких как Redis, кеш в памяти, для повышения производительности приложения. Подробнее см. Кеширование
cronJobManagerCronJobManagerИспользуется для регистрации, запуска и управления запланированными задачами, поддерживает конфигурацию выражений Cron. Подробнее см. Запланированные задачи
i18nI18nПоддержка интернационализации, предоставляет функции многоязычного перевода и локализации, что упрощает поддержку нескольких языков плагинами. Подробнее см. Интернационализация
cliCLIУправление интерфейсом командной строки, регистрация и выполнение пользовательских команд, расширение функциональности CLI NocoBase. Подробнее см. Командная строка
dataSourceManagerDataSourceManagerУправление несколькими экземплярами источников данных и их соединениями, поддержка сценариев с несколькими источниками данных. Подробнее см. Управление источниками данных
pmPluginManagerМенеджер плагинов, используется для динамической загрузки, активации, деактивации и удаления плагинов, а также для управления зависимостями между плагинами.

Примечание: Подробное описание использования каждого модуля см. в соответствующих разделах документации.