تغيير جذري: السلوك الافتراضي لتصدير 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. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3