Реализация концепции user_actions для клиентской стороны. Упрощает и немного формализует взаимодействие с сервером.
Для установки на сайт достаточно копировать файл библиотеки dist/user_actions.min.js
и подключить его как скрипт.
Библиотека создает глобальный объект UserActions
. Чтобы отправить запрос к серверу, достаточно вызвать метод
UserActions.do( '<action_name>', options );
, с нужными настройками, где:
<action_name>
- обязательный, строковый код действия пользователя (согласно соглашению)options
- опциональный, объект параметров запросаdata
- объект (в т.ч. экземплярFormData
) данных, составляющих тело запросаurl
- адрес на который отправить запрос (абсолютный или относительный, по умол. текущая стр)handleSuccess
- обработчик который будет вызван при успешном запросе. В качестве параметра получает:result_data
- данные ответа от сервера (согласно соглашению)
handleError
- обработчик который будет вызван при ошибке запроса (любой, на сервере или в js коде). В качестве параметра получает:Error
- Объект JS ошибки (согласно соглашению)
Метод блокирует одновременное выполнение одинаковых запросов
Модуль позволяет настроить эмуляцию запросов, в случаях если не готова серверная сторона или среда разработки не позволяет делать запросы. Пример:
UserAction.enableEmulation(); // переключаем модуль в режим эмулирования
UserAction.Emulator.add('test', // добавляем запрос для эмуляции (со всеми параметрами, важно)
{
data: {error: 1},
},
{ // заполняем объект ответа, согласно концепции
status: false,
result: {
code: 'HAPPENED',
msg: "Произошло...",
info: {
some: "Дополнительная информация, если есть"
}
}
}
);
window.UserAction.do( 'test', { // при запросе в коде, буде отдан объект определенный выше (под дальнейшую обработку)
data: {error: 1},
});
По умолчанию UserActions
использует встроенные обработчики для успешного ответа и ответа с ошибкой (если в запросе не
указаны другие). Их можно заменить, например:
// после подключения модуля
UserAction.handleSuccessDefault = (data) => { alert( 'По умол., успех: ' + data); };
UserAction.handleErrorDefault = (Error) => { alert( 'По умол., ошибка: ' + Error.message); };
window.UserAction.do( 'buffer', { // при запросе в коде, буде отдан объект определенный выше (под дальнейшую обработку)
data: {
part: 'block_3' // заложенная по соглащению часть шаблона
// ... дополнительные данные для фариаций части
},
});