layout.tsx

Обзор

Файл layout.tsx является корневым (root) макетом (layout) для веб-приложения на базе Next.js. Его основная задача — обернуть всё содержимое приложения в общий HTML-каркас, настроить глобальные стили и шрифты, а также предоставить контекст и структуру для дочерних компонентов. В частности, этот файл интегрирует провайдер состояния игры (GameProvider) и базовый компонент компоновки интерфейса игры (GameLayout), обеспечивая газлесс (без комиссий) игровой опыт Web3.


Подробное описание

Импорты


Константы

inter

const inter = Inter({ subsets: ['latin'] });

Экспортируемые сущности

metadata: Metadata

export const metadata: Metadata = {
  title: 'Mana Game - Gasless Gaming Experience',
  description: 'Experience the future of Web3 gaming with gasless transactions powered by Symbiotic',
};

Функция по умолчанию: RootLayout

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <body className={inter.className}>
        <GameProvider>
          <GameLayout>
            {children}
          </GameLayout>
        </GameProvider>
      </body>
    </html>
  );
}

Описание

Параметры

Параметр

Тип

Описание

children

React.ReactNode

Дочерние элементы, вложенные в макет

Возвращаемое значение

Пример использования

В Next.js 13+ (с поддержкой App Router) этот файл используется автоматически как корневой layout, поэтому его не вызывают напрямую. Пример компонента, который будет вложен:

export default function HomePage() {
  return <div>Добро пожаловать в игру Mana!</div>;
}

HomePage будет отображаться внутри <GameLayout> и под управлением <GameProvider>.


Важные детали реализации


Взаимодействие с другими частями системы


Диаграмма структуры файла

componentDiagram
    RootLayout <|-- GameProvider : Оборачивает
    GameProvider <|-- GameLayout : Оборачивает
    GameLayout <|-- children : Отображает
    RootLayout : +metadata
    RootLayout : +inter (шрифт)
    RootLayout : +HTML lang="en"
    RootLayout : +body с классом inter.className

Итог

Файл layout.tsx — фундаментальный элемент архитектуры приложения, объединяющий глобальные стили, шрифты, метаданные и контекст игрового состояния, а также обеспечивающий единый визуальный каркас для всех страниц и компонентов игры Mana. Он является точкой интеграции между состоянием приложения и его UI-слоем, обеспечивая удобство масштабирования и поддержки кода.