DanLevy.net

تصديرات ESM: مسماة أم افتراضية؟

أن تسمي أم لا تسمي؟

Hero image for تصديرات ESM: مسماة أم افتراضية؟

هل يجب استخدام التصدير المُسمى (named) أم التصدير الافتراضي (default) في JavaScript؟

لا يوجد نقص في المقالات ذات الآراء القوية حول هذا الموضوع.

الأغلبية تحكم على export default بأنه “سيء”. بينما يرى آخرون أن default يجب أن يفوز (مثل دليل أسلوب AirBnb).

غالبًا ما يلومون أشياء مؤقتة تمامًا: أخطاء الاستيراد التلقائي في بيئة التطوير، قدرات التجميع (tree-shaking) لأداة حزم معينة، أو مجرد احتمالية الأخطاء المطبعية عند تسمية الاستيراد.

هل فاتنا الهدف الأساسي من export في المقام الأول؟

الكود هو تواصل. ✨

نحن نرسل إشارة إلى المستوردين كيفية استخدام الشيء.

إذن، ماذا نقول؟

بشكل عام، هناك طريقتان لتصدير الأشياء في JavaScript الحديثة:

بالتأكيد يمكنك الجمع بينهما، أو استخدام أساليب مختلفة لأجزاء مختلفة من قاعدة الكود الخاصة بك. شاهد المزيد من الأمثلة في نهاية المقال.

حجج ضعيفة، يا رجل

دعنا نعالج بعض “المشكلات المؤقتة” الشائعة التي يواجهها الناس.

// يمكنك استخدام اسم مستعار مع كليهما!
import { Knife as Handle } from "./knife.js"; // 🔪
import { default as Handle } from "./knife.js"; // 🔪
import Handle from "./knife.js"; // 🔪

ملخص

في الواقع هناك العديد من التركيبات لطرق تصدير الأشياء، كل منها يروي قصة مختلفة:

افتراضي (تصديرات)مُسمى (تصديرات)دوال خاصةالنمطالمعنى
تصدير افتراضي واحد.”تقديم دالة واحدة ذات غرض واحد!”
تصدير مُسمى واحد.”من فضلك لا تعيد تسميتي.”
تصدير افتراضي + دوال ‘خاصة’ متعددة غير مُصدرة”إليك بعض المنطق المرتبط. أيضاً، توقع سلوكاً شبيهًا بالكلاس.”
تصديرات مُسماة متعددة، اسم ملف عام.”حقيبة مختلطة من أشياء مرتبطة بشكل فضفاض، بدون تسلسل هرمي.”
تصدير مُسمى واحد يُصدر أيضاً كافتراضي.”لا يمكنك أن تخطئ في استيرادي.”

شيء للتفكير فيه: ماذا نقول عندما يتطابق اسم الملف أو لا يتطابق مع أحد تصديراته؟ (على سبيل المثال، ملف utils.js به دوال كثيرة.)

الخاتمة

إذا كان الكود هو تواصل، فمن فضلك export وكأنك تعني ذلك بكل جدية. 💞