"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يتعامل Babel 6 مع الصادرات الافتراضية بشكل مختلف؟

كيف يتعامل Babel 6 مع الصادرات الافتراضية بشكل مختلف؟

تم النشر بتاريخ 2024-11-14
تصفح:463

How Does Babel 6 Handle Default Exports Differently?

تغيير جذري: السلوك الافتراضي لتصدير Babel 6

مع إصدار Babel 6، تم تنفيذ تغييرات مهمة في كيفية التعامل مع الصادرات الافتراضية . بينما قام بابل بإضافة السطر سابقًا Module.exports = Exports["default"]، فقد تمت إزالة هذه الوظيفة.

يستلزم هذا التعديل تغييرًا في بناء جملة استيراد الوحدة النمطية. في السابق، كان الكود يستخدم الصيغة القديمة:

var foo = require('./foo');
// use foo

يجب الآن استخدام الصيغة التالية:

var foo = require('./foo').default;
// use foo

على الرغم من أن هذا التعديل قد يبدو بسيطًا، إلا أنه يمكن أن يشكل تحديًا للمشاريع التي تعتمد بشكل كبير على التعليمات البرمجية على آلية التصدير السابقة.

الحل البديل

إذا كان سلوك التصدير القديم مطلوبًا، فمن المستحسن الاستخدام المباشر لـ CommonJS. وبدلاً من ذلك، يمكن استخدام مكون إضافي مخصص لتوفير التوافق المطلوب. من المحتمل أن تعكس وظيفة هذا البرنامج المساعد السلوك الذي تمت إزالته في Babel 6، وذلك بإضافة سطر Module.exports = Exports["default"] إلى المخرجات المنقولة.

تأثير الصادرات المسماة

تجدر الإشارة إلى أن إزالة مهمة Module.exports التلقائية تعمل على تحسين دلالات ES6 وتمنع الارتباك المحتمل. ستعمل عمليات التصدير المسماة الآن كما هو متوقع، دون تعيينات غير مقصودة للتصدير الافتراضي.

مثال

يوضح التعليمة البرمجية التالية الفرق بين سلوك التصدير في Babel 5 وBabel 6:

// Input
const foo = {}
export default foo

Babel 5 Output

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];

Babel 6 Output

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;
كما يمكن ملاحظته، فإن الاختلاف الوحيد في الإخراج هو غياب الوحدة النمطية.exports = Exports["default"] في بابل 6.

بيان الافراج أعيد طبع هذه المقالة على: 1729644858 في حالة وجود أي مخالفة، يرجى التواصل مع [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3