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/client, разработчики могут регистрировать логику, добавлять компоненты страниц, расширять меню или интегрировать сторонние функции на различных этапах жизненного цикла.

#Структура класса плагина

Базовая структура клиентского плагина выглядит следующим образом:

import { Plugin } from '@nocobase/client';

export class PluginHelloClient extends Plugin {
  async afterAdd() {
    // Выполняется после добавления плагина
    console.log('Plugin added');
  }

  async beforeLoad() {
    // Выполняется перед загрузкой плагина
    console.log('Before plugin load');
  }

  async load() {
    // Выполняется при загрузке плагина, регистрирует маршруты, компоненты пользовательского интерфейса и т. д.
    console.log('Plugin loaded');
  }
}

export default PluginHelloClient;

#Описание жизненного цикла

Каждый плагин последовательно проходит следующие этапы жизненного цикла при обновлении браузера или инициализации приложения:

Метод жизненного циклаВремя выполненияОписание
afterAdd()Выполняется сразу после добавления плагина в менеджер плагиновВ этот момент экземпляр плагина уже создан, но не все плагины завершили инициализацию. Подходит для легковесной инициализации, например, для чтения конфигурации или привязки базовых событий.
beforeLoad()Выполняется перед методом load() всех плагиновВы можете получить доступ ко всем включенным экземплярам плагинов (this.app.pm.get()). Подходит для подготовительной логики, которая зависит от других плагинов.
load()Выполняется при загрузке плагинаЭтот метод выполняется после завершения beforeLoad() всех плагинов. Подходит для регистрации фронтенд-маршрутов, компонентов пользовательского интерфейса и другой основной логики.

#Порядок выполнения

При каждом обновлении браузера последовательно выполняются методы afterAdd() → beforeLoad() → load().

#Контекст плагина и FlowEngine

Начиная с NocoBase 2.0, API расширений на стороне клиента в основном сосредоточены в FlowEngine. В классе плагина вы можете получить экземпляр движка через this.engine.

// Доступ к контексту движка в методе load()
async load() {
  const { app, router, apiClient } = this.engine.context;
  console.log('Current app:', app);
}

Подробнее см.:

  • FlowEngine
  • Контекст