Движок рендеринга модульных блоков (Block Renderer Engine)
Центральный движок, преобразующий JSON-объекты из Dynamic Zones Strapi в высокопроизводительные компоненты React со строгой типизацией.
Максимальная гибкость для создателей контента
Движок динамически связывает поля Strapi с соответствующими компонентами React и применяет визуальные стили за миллисекунды.
1. Как работает BlockRenderer в Next.js 16
Движок опирается на динамическую карту компонентов, сопоставляющую каждый тип блока с его вариантом дизайна и передающую типизированные свойства (Props).
- Массив dynamic_zone извлекается из GraphQL- или REST-запроса Strapi.
- Свойство __component сопоставляется с типом блока (напр., blocks.hero-section).
- Считывается вариант оформления, выбранный в админ-панели (style-1, style-2, style-3).
- Соответствующий React-компонент загружается и связывается с переводами текущей локали.
- Результат кэшируется с тегами Next.js для сверхбыстрой доставки пользователю.
Базовая структура файла BlockRenderer.tsx
tsximport React from "react"import { ProductShowcaseProps } from "../types" export default function ProductShowcaseStyle3({ block, products }: ProductShowcaseProps) { return ( <section className="py-12 bg-gradient-to-r from-gray-900 to-black text-gray-900 dark:text-white"> <h2 className="text-xl font-bold mb-6">{block.title}</h2> </section> )}2. Карта типов компонентов и свойств
Строгое определение интерфейсов TypeScript для каждого блока (Hero, Витрина товаров, Особенности, Баннеры), исключающее ошибки во время выполнения.
- Создайте новый компонент HeroStyle4.tsx в папке src/components/blocks/hero.
- Экспортируйте компонент в карте стилей в файле index.ts блока.
- Добавьте опцию style-4 в поле выбора стиля блока в панели Strapi.
- Опубликуйте страницу в Strapi, чтобы мгновенно увидеть обновленный дизайн.
- При необходимости обновите определения интерфейсов в TypeScript.
- Проверьте страницу в браузере для подтверждения корректной работы стиля.
Готовые стили в реестре Loomix Registry
Вместо создания с нуля скачивайте профессиональные готовые стили одной командой Loom CLI.
Система включает более 15 предустановленных стилей для любых маркетинговых и торговых задач.
3. Паттерн Фабрика и динамический выбор стилей
Каждый блок делегирует визуальный рендеринг определенному подкомпоненту на основе значения поля `style` (style-1, style-2 и т.д.).
- Элегантный компонент-заглушка (Fallback), отображающий предупреждения разработчику в dev-режиме.
- Мгновенная отправка отчета об ошибке в централизованную систему логов OpenObserve.
- В продакшене остальная часть страницы продолжает работать без сбоев.
- Строгая проверка данных через интерфейсы TypeScript.
Пример компонента Fallback в BlockRenderer
typescriptimport React from "react"import ProductShowcaseBlock from "./ProductShowcaseBlock"import FeaturesBlock from "./FeaturesBlock"import BlockAnimateWrapper from "./BlockAnimateWrapper" export default async function BlockRenderer({ block, region, countryCode, index }) { let BlockContent: React.ReactNode = null switch (block.__component) { case "ui.product-showcase-block": BlockContent = <ProductShowcaseBlock block={block} region={region} countryCode={countryCode} /> break case "ui.features-block": BlockContent = <FeaturesBlock block={block} /> break default: return null } return <BlockAnimateWrapper index={index}>{BlockContent}</BlockAnimateWrapper>}Лучшие практики производительности и быстрой загрузки
Используйте next/dynamic для блоков ниже первого экрана (below the fold), чтобы оптимизировать начальную загрузку.