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Контекст (Context)
Повідомлення про переклад ШІ

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

#Плагін

У 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
  • Контекст