SLOT-H: Выбор js-оболочки



В текущей реализации фронтенд часть построена на собственной оболочке над jQuery старой версии. Это осознанное решение, обусловленное архитектурными особенностями экосистемы.

Важно: данный выбор сложился годами. Как художник - я так вижу. Код получается почти обфусцированным и крайне минималистичным. Привыкнув, я читаю на нем и пишу быстро. Однако, это не доступно будет с нуля без попытки понять идеологию данного решения.

Потому выбор - за вами: попробовать изучить, либо использовать то, к чему привыкли.




Почему jQuery



Вся экосистема в связке frontend/backend построена на неявной передаче подписи (sign) и её актуализации при AJAX-запросах. jQuery предоставляет стабильную основу для реализации этого механизма.

Переход на другой JS-фреймворк или нативный JS возможен, но потребует самостоятельной реализации механизма подписи на новом стеке. В текущей версии это не реализовано.

Впоследствии будет выложен отдельный JS-код, содержащий необходимые функции для поддержки работы на альтернативных JS-фреймворках.




Соглашения при работе с фронтендом



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

1. Формы



Кнопка отправки формы должна быть заменена на неактивный с точки зрения `<form>` элемент. Например, `<div>` со стилизацией под кнопку.

Обычная кнопка `<button type="submit">` не используется.

2. Отправка формы



Отправка формы должна происходить через метод обработки клика по элементу-заменителю с вызовом:

javascript
$.submit($(this));
`
Этот метод автоматически:

добавляет в форму актуальную подпись (sign)

инициирует отправку данных

Если этого не сделать, при IGNORE_SIGN = false в config.php данные из формы не будут приняты бэкендом.

3. AJAX-запросы


Отправка AJAX-запросов должна выполняться через функции:

- api(...) - для обычных запросов

- apiFile(...) - для загрузки файлов

Эти функции автоматически подставляют актуальную подпись в запрос.

4. Обработка ответа


Функции api и apiFile поддерживают асинхронную работу. При использовании callback-функции для обработки ответа необходимо после распаковки ответа обновить подпись:

javascript
var i = JSON.parse(e);
alfaFooter = i.sign;
`
Это гарантирует, что следующая подпись будет актуальной.

Итог


Текущая реализация фронтенда основана на jQuery и требует соблюдения описанных соглашений. Это обеспечивает согласованную работу механизма подписи между фронтендом и бэкендом.

При желании перейти на другой JS-фреймворк потребуется реализовать аналогичный механизм подписи на новом стеке.




Что дальше?



- ➡️ Раздел 24. Динамическая подпись
- ➡️ Раздел 25. Защита доступа
- ➡️ Раздел 26. Принцип локализации