برنامه نویس موبایل
کتابخانه کوچک KY
با این سوال شروع میکنم که برای درخواست های HTTP از fetch استفاده کنیم یا axios؟
احتمالا برای همه مون این سوال پیش اومده و مطالب مختلفی رو برای مقایسه این دو ابزار خوندیم. بد نیست یه نگاه مختصری به تفاوت هاشون هم بندازیم:
- بعد از نسخه Chrome +42, Firefox +39, Edge +14, Safari +10.3 مرورگر ها از fetch پشتیبانی می کنن. اما axios چون تو بکگراند از XMLHttpRequest استفاده میکنه، مرورگر های قدیمی تری رو پشتیبانی میکنه که البته تو این تاریخی که هستیم خیلی اهمیت نداره.
- قابلیت هایی مثل interceptors، timeout، download progress، json parser به صورت دیفالت در axios پیاده سازی شدند ولی اگه از fetch بخوایم استفاده کنیم، باید خودمون پیاده سازیشون کنیم که البته قابلیت های قابل چشم پوشی ای هم نیستن.
از طرف دیگه axios در حجم bundle خروجی مون خیلی تاثیر گذار هست و تو پروژه هایی که bundle size اهمیت زیادی داره، این مسئله هم نمایان تر میشه. بعضی، سر این که بهتره از قابلیت های پیش فرض استفاده کنیم و کتابخونه اضافه به پروژه مون اضافه نکنیم از axios استفاده نمیکنن؛ به خصوص اگر نیازی به قابلیت های اضافیش نداشته باشند.
اما بعضی دیگه هم فقط به خاطر یکی از این قابلیت ها مثل download progress یا interceptors هایی که همراه با axios میاد بیشتر موافقش هستند یا حتی مجبور به استفاده ازش میشن. برخی هم ترجیح میدن با احتمال اینکه شاید در آینده نیازمندی پروژه مون بشه، اضافهاش میکنن.
نه به axios درود بر ky :)
بریم سراغ اصل مطلب، یعنی کتابخونه ky. این کتابخونه در واقع یک wrapper برای fetch هست و فوق العاده سبک با قابلیت های مهم axios. طبق چیزی که کتابخونه مدعی هست:
Ky is a tiny and elegant HTTP client based on the browser Fetch API
قابلیت هایی که بهمون میده:
- یک API ساده تر
- دسترسی به متد ها به صورت shortcut مثل ky.post
- درخواست مجدد (retry) ریکوست های fail شده
- پشتیبانی از request timeout
- امکان تنظیم baseUrl با عنوان prefixUrl
- قابلیت interceptor ها (با عنوان hooks)که بهمون اجازه میدن قبل و بعد از ارسال درخواست، کاری رو انجام بدیم.
- نمایش download progress و ...
یک نکته
نکته ای که باید بهش توجه کنیم در ابتدای داکیونت ky گفته شده که هدف و تارگت ky مرورگر های مدرن و Deno هستش و اگر از node js استفاده میکنیم Got ابزار مناسب تری هست
Ky targets modern browsers and Deno. For older browsers, you will need to transpile and use afetch
polyfill andglobalThis
polyfill. For Node.js, check out Got.
در نهایت...
قطعا این کتابخونه برای کسایی که تو پروژه شون باندل سایز اهمیت داره، مفید هست. اگه معمولا axios رو فقط برای قابلیتی مثل download progress به پروژهمون اضافه میکنیم ky ابزار سبکتر و مناسبتری میتونه باشه. و از نظر خودم اکثر نیازمندی هایی که تو خیلی از پروژه ها سراغ axios میریم رو برطرف میکنه.
اگر هم تجربه استفاده از این کتابخونه یا مشابهش رو داری ممنون میشم که تو بخش نظرات برای من و بقیه بنویسی ❤
مطلبی دیگر از این انتشارات
کسری قدرشناسی
مطلبی دیگر از این انتشارات
به ۱+۱۰ دلیل ایدهها دزدیده نمیشوند.
مطلبی دیگر از این انتشارات
خودت را بهتر بشناس