Какие плюсы и минусы axios

Ответ

Плюсы:

  • Удобный API с поддержкой промисов
  • Автоматическая трансформация JSON
  • Перехватчики запросов и ответов (interceptors)
  • Отмена запросов (CancelToken)
  • Защита от XSRF
  • Поддержка async/await
  • Кроссбраузерность (работает и в Node.js, и в браузере)

Минусы:

  • Дополнительный вес (~4KB минифицированный)
  • Требует ручной отмены запросов при unmount компонента
  • Не встроен в браузер (в отличие от fetch)

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

axios.get('/user', {
  params: { ID: 123 }
})
.then(response => console.log(response))
.catch(error => console.error(error));

Ответ 18+ 🔞

Ну вот, сидишь ты такой, фронтендер-распиздяй, и думаешь: "Какой же хуйней мне сегодня заняться? А, знаю! Напишу запрос на сервер!" И тут перед тобой, как на блюдечке, этот ваш axios, блядь.

Плюсы, которые тебя просто охуенно порадуют:

  • API такой удобный, что прям хоть в рот бери. Промисы? Да, блядь, нате вам! Как горячие пирожки.
  • Привезли тебе JSON — а он уже сам, сука, распаковался, как будто его мамка в детстве собирала. Автоматическая трансформация, ёпта!
  • Перехватчики запросов и ответов (interceptors). Это как поставить шпиона в почтовое отделение: всё видит, всё слышит, может даже письмо подменить, хитрая жопа.
  • Запрос начал, а потом передумал? Без проблем! Вот тебе CancelToken — на, отмени эту поебень, если что.
  • Защита от XSRF. Не то чтобы прям пиздец как важно всегда, но когда надо — спасибо скажешь, что она есть, а не как с fetch, где самому надо городить.
  • async/await поддерживает. Красота, а не жизнь. Пишешь код, как будто он синхронный, а он, сука, асинхронный! Магия, блядь.
  • Работает везде: и в браузере, где ты обычно сидишь, и в Node.js, если вдруг на серверной стороне мозги поехали.

Но и минусы, от которых волосы ебут мозг:

  • Весит, падла, лишние ~4KB. В эпоху, когда каждый килобайт на счету, это как привезти с собой на пикник кирпич. "На всякий случай, вдруг пригодится".
  • Уходишь со страницы (unmount компонента), а запрос-то, сука, уже полетел! И летит себе, как хуй с горы. Надо не забыть его вручную отменить, а то память потечёт, и будет тебе пиздец, а не оптимизация.
  • Он не встроен в браузер, в отличие от того же fetch. Значит, тащи ещё одну зависимость, распиздяй. Ещё один пакетик в node_modules, который через полгода устареет.

Ну и смотри, как это, блядь, выглядит в коде. Просто, как три копейки:

axios.get('/user', {
  params: { ID: 123 }
})
.then(response => console.log(response))
.catch(error => console.error(error));

Вот и вся философия. Хочешь удобства и мощи — бери axios и не парься. Не хочешь тащить лишнее — иди нахуй с его fetch, там свои грабли есть, и не меньше. Выбор, как всегда, за тобой, чувак.