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

Введение

Что такое FlowEngine?
Связь FlowEngine и плагинов
Быстрый старт
План обучения

Руководство

Регистрация FlowModel
Создание FlowModel
Рендеринг FlowModel
Поток событий и конфигурация FlowModel
Персистентность FlowModel
Жизненный цикл FlowModel
Система контекста FlowModel
Реактивный механизм: Observable
FlowModel vs React.Component

Определения

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageЧто такое FlowEngine?
Next PageБыстрый старт
Уведомление о переводе ИИ

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

#Связь между FlowEngine и плагинами

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

class PluginHello extends Plugin {
  async load() {
    this.engine.registerModels({ ... });
  }
}

#Context: Централизованное управление глобальными возможностями

FlowEngine предоставляет централизованный Context, который объединяет API, необходимые для различных сценариев. Например:

class PluginHello extends Plugin {
  async load() {
    // Расширение маршрутизации
    this.engine.context.router;

    // Отправка запроса
    this.engine.context.api.request();

    // Связанное с интернационализацией (i18n)
    this.engine.context.i18n;
    this.engine.context.t('Hello');
  }
}

Примечание: В версии 2.0 Context решает следующие проблемы, существовавшие в версии 1.x:

  • Разрозненный контекст, непоследовательные вызовы
  • Потеря контекста между различными деревьями рендеринга React
  • Возможность использования только внутри компонентов React

Подробнее см. в главе FlowContext.


#Сокращенные псевдонимы в плагинах

Для упрощения вызовов FlowEngine предоставляет несколько псевдонимов в экземпляре плагина:

  • this.context → эквивалентно this.engine.context
  • this.router → эквивалентно this.engine.context.router

#Пример: Расширение маршрутизации

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

class PluginHelloModel extends Plugin {
  async afterAdd() {}
  async beforeLoad() {}
  async load() {
    this.router.add('root', {
      path: '/',
      element: <div>Hello</div>,
    });
  }
}

// Для примеров и тестовых сценариев
const app = createMockClient({
  plugins: [PluginHelloModel],
});

export default app.getRootComponent();

В этом примере:

  • Плагин расширяет маршрут для пути / с помощью метода this.router.add;
  • createMockClient предоставляет чистое мок-приложение для удобной демонстрации и тестирования;
  • app.getRootComponent() возвращает корневой компонент, который можно напрямую монтировать на страницу.