Перейти к основному содержимому

Frontend overview

Frontend проекта гибридный.

В нём есть:

  • Blade views;
  • Livewire components;
  • Filament admin UI;
  • Tailwind CSS;
  • Less/Bootstrap legacy-compatible styles;
  • JS runtime для history API и timezone;
  • HTML layout, полученный со старого WordPress/v1 сайта.

Asset entrypoints

vite.config.js подключает основные entrypoints:

  • resources/js/common.js;
  • resources/js/public.js;
  • resources/css/pure/style.less;
  • resources/css/tailwind/app.css;
  • resources/css/filament/app.css.

CSS слои

ФайлНазначение
resources/css/pure/style.lessLegacy/bootstrap-compatible стили, FontAwesome, bootstrap-icons, локальные less-компоненты
resources/css/tailwind/app.cssTailwind для публичных страниц
resources/css/filament/app.cssTailwind/Filament theme layer для админки

JS runtime

common.js

Общий runtime для public/admin:

  • отправляет timezone в Livewire;
  • содержит reload hook.

public.js

Public SPA runtime:

  • слушает browser history events;
  • dispatch-ит Livewire popstateCustom;
  • слушает Livewire events setUrl, redirectToUrl, setPageTitle;
  • меняет URL через history API;
  • меняет document title.

Public Blade entrypoints

ViewНазначение
pages/modern-catalog.blade.phpСовременный каталог
pages/modern-roadmap.blade.phpRoadmap /program
proxy-pages/page.blade.phpProxy page обычного типа
proxy-pages/tailwind-page.blade.phpProxy page с Tailwind layout

Layout injection

Для страниц, которые живут поверх старого сайта, используются grabbed layout components.

Идея:

  1. взять HTML старого layout;
  2. очистить/заменить часть DOM;
  3. вставить Laravel slot;
  4. вставить дополнительные head/body fragments;
  5. отдать пользователю гибридную страницу.

SEO/head rewrite делается через Blade component components/inject/page-head.blade.php, который учитывает $GLOBALS['page_custom_head'].

Preview pages

routes/web.php содержит /preview/* routes. Они полезны для ручной проверки отдельных элементов:

  • product list;
  • product page;
  • product card;
  • sale page;
  • roadmap prototype;
  • cache page.

Это не основная production-навигация, а sandbox.