Обзор расширений блоков

В NocoBase 2.0 механизм расширения блоков был существенно упрощён. Разработчику достаточно унаследоваться от соответствующего базового класса FlowModel (модель потока) и реализовать нужные методы интерфейса (в основном метод renderComponent()), чтобы быстро создавать собственные блоки.

Категории блоков

NocoBase делит блоки на три типа, которые отображаются группами в интерфейсе конфигурации:

  • Блоки данных: блоки, унаследованные от DataBlockModel или CollectionBlockModel
  • Блоки фильтров: блоки, унаследованные от FilterBlockModel
  • Прочие блоки: блоки, напрямую унаследованные от BlockModel

Группа блока определяется его базовым классом. Логика классификации основана на отношениях наследования и не требует дополнительной конфигурации.

Описание базовых классов

Система предоставляет четыре базовых класса для расширения:

BlockModel

Базовая модель блока — наиболее универсальный базовый класс блока.

  • Подходит для блоков, которые только отображают информацию и не зависят от данных
  • Относится к группе Прочие блоки
  • Применяется в персонализированных сценариях

DataBlockModel

Модель блока данных (не привязана к коллекции) — для блоков с собственным источником данных.

  • Не привязана напрямую к коллекции, можно реализовать произвольную логику получения данных
  • Относится к группе Блоки данных
  • Подходит для сценариев: вызов внешних API, пользовательская обработка данных, статистические диаграммы и т. п.

CollectionBlockModel

Модель блока коллекции — для блоков, которым требуется привязка к коллекции.

  • Требует привязки к базовому классу модели коллекции
  • Относится к группе Блоки данных
  • Подходит для: списков, форм, канбан-досок и других блоков, которые явно зависят от конкретной коллекции

FilterBlockModel

Модель блока фильтра — для построения блоков с условиями фильтрации.

  • Базовый класс модели для построения фильтров
  • Относится к группе Блоки фильтров
  • Обычно используется совместно с блоками данных

Как выбрать базовый класс

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

  • Нужно привязать к коллекции: в первую очередь выбирайте CollectionBlockModel
  • Нужен собственный источник данных: выбирайте DataBlockModel
  • Нужно задавать условия фильтрации и работать с блоками данных: выбирайте FilterBlockModel
  • Не уверены, как классифицировать: выбирайте BlockModel

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

Создание пользовательского блока включает всего три шага:

  1. Унаследоваться от соответствующего базового класса (например, BlockModel)
  2. Реализовать метод renderComponent(), возвращающий React‑компонент
  3. Зарегистрировать модель блока в плагине

Подробный пример смотрите в статье Написание плагина блока.