search
1.6 Серверное взаимодействие
Назначение
SFLoaderPlugin взаимодействует с сервером для получения:
- Списка необходимых JS и CSS-файлов;
- Шаблонов Smart-компонентов (если они используются);
- Конфигураций и зависимостей;
- Результатов кэшированной сборки (если она уже есть).
Такое взаимодействие необходимо, если проект работает в режиме standAlone: false, то есть не использует
пред собранные ассеты, а полагается на динамическую загрузку и серверную генерацию.
Основной запрос
Загрузчик отправляет GET-запрос на сервер по адресу:
/simai/loader/loader.php
С параметрами, например:
?a=modal,tooltip&relations={"modal":["core"]}&checkFake=true
Передаваемые параметры
| Параметр | Назначение |
|---|---|
| a | Список компонентов для загрузки |
| relations | Объект зависимостей между компонентами |
| checkFake | Флаг для запроса fake-шаблонов Smart-компонентов |
| url | URL страницы (для формирования pageHash) |
| load | Было обращение к бекенду ранее или нет |
| gzip | Признак поддержки gzip-файлов (Что бы не гонять curl каждый раз) |
Серверная обработка
На сервере работает класс Loader.php, который:
- Обрабатывает входящие параметры;
- Вызывает
LoaderAsset,AssetManager,TemplateLoader; - Генерирует:
- JS и CSS сборки;
- fake-шаблоны;
- конфигурацию для инициализации.
Ответ сервера
Ответ может содержать:
smartFakeContent— сериализованные шаблоны;- Список путей к
.jsи.css-файлам; - Идентификаторы кеша (
BUNDLE_ID,pageHash); - Флаг gzip.
{
"status": true,
"js": [
"/simai/cache/loader/bundle-abc123.js"
],
"css": [
"/simai/cache/loader/bundle-abc123.css"
],
"smartFakeContent": {
"templates": {
...
},
"fakeTemplates": {
"modal": "<div>...</div>"
}
},
"bundleId": "abc123"
}
Особенности
- Запрос всегда зависит от текущего URL (хэшируется на сервере);
- Сервер может вернуть уже готовые сборки;
- Используется библиотека
MatthiasMullie\Minifyдля объединения и минификации; - Для Smart-компонентов вызывается
TemplateLoader::buildObject().