نقل عبر fetch فقط
مسار واحد فوق fetch القياسي — Node وBun وDeno والـ Workers والمتصفات الحديثة دون مكملات إلزامية.
| المعيار | openFetchمكتبتك | Axios | ky |
|---|---|---|---|
| طبقة النقل | fetch | XHR (افتراضي في المتصفح) | fetch |
| تبعيات وقت التشغيل | صفر | مجموعة خاصة | صفر |
| مثيل وإعدادات افتراضية | createClient | axios.create | ky.create |
| معترضات الطلب والاستجابة | الاثنان | الاثنان | خطافات فقط |
| وسيط قابل للتجميع | use() | — | — |
| إعادة محاولة وتخزين مؤقت (اختياري) | إضافات | منفصل | إعادة محاولة فقط |
| استجابة موحّدة للعميل | OpenFetchResponse | AxiosResponse | Response / مُحلّى |
| مناسب للحافة و RSC | يستخدم fetch | محوّلات | fetch |
الحجم الفعلي يعتمد على الدمج والمسارات المستوردة. الفارق الجوهري: openFetch يضيف طبقة عميل فوق fetch دون الانتقال إلى XHR.
واجهة فئات EscuelaJS تُرجع مصفوفة JSON. أدناه: openFetch، Axios، وky.
openFetch — إعدادات مشتركة، استجابة منظمة، وجاهزية للمعترضات والوسيط:
import openFetch from "@hamdymohamedak/openfetch";
const res = await openFetch.get(
"https://api.escuelajs.co/api/v1/categories"
);
// res.data, res.status, res.headers, res.configAxios — واجهة مألوفة؛ نقل افتراضي مختلف في المتصفح:
import axios from "axios";
const res = await axios.get(
"https://api.escuelajs.co/api/v1/categories"
);
// res.data, res.status, res.headers, res.configky — واجهة صغيرة فوق fetch:
import ky from "ky";
const data = await ky
.get("https://api.escuelajs.co/api/v1/categories")
.json();اضغط تشغيل القياس (٥ جولات): في كل جولة يُنفَّذ ثلاثة طلبات GET متوازية (openFetch، Axios، ky) مع تعطيل التخزين المؤقت حيثما أمكن. البطاقات تعرض آخر قياس، المتوسط، الأدنى، والأعلى؛ القائمة تُرتّب حسب متوسط الزمن (الأقل = أسرع في هذه الجلسة). الأسرع يحصل على شريط صغير — مع ذلك اقرأ التنبيه: الشبكة هي المهيمنة؛ هذا لقطة من جلستك وليس حكماً أدائياً مطلقاً.
baseURL، ترويسات، مهلة زمنية، وunwrapResponse لمثيل createClient.try/catch العشوائي.openFetch يستهدف الفرق التي تريد ذلك مع البقاء على fetch حيث يوفّره النظام.
createClient، أول طلباتrequest()rawResponse، دمج الإعداداتplugins وsugaruse()، وسيط مخصصOpenFetchError، الرموز، التسجيل الآمن، assertSafeHttpUrl| التصدير | الدور |
|---|---|
| الافتراضي | مثيل جاهز من createClient() |
createClient / create | عميل جديد مع initialDefaults اختيارية |
createFluentClient | سلاسل URL مرنة (من /sugar) |
retry, timeout, hooks, debug, strictFetch | إضافات وسيط (من /plugins) |
OpenFetchError، isOpenFetchError | أخطاء مُنمّاة + حارس النوع |
InterceptorManager | مكدس المعترضات |
createRetryMiddleware | مصنع وسيط إعادة المحاولة |
MemoryCacheStore، createCacheMiddleware، appendCacheKeyVaryHeaders | تخزين مؤقت في الذاكرة |
| الأنواع | OpenFetchConfig، OpenFetchResponse، Middleware، إلخ. |
assertSafeHttpUrl | حارس اختياري على نمط SSRF |
Node.js 18+ أو أي بيئة فيها fetch وAbortController.
تصفح كل الترجمات.