export
التعبير البرمجي export
يمكن أن يُستخدَم عند إنشاء وحدات JavaScript (أي JavaScript modules) لتصدير الدوال أو الكائنات أو القيم الأوليّة (primitive values) من وحدة (module) لكي يمكن استخدامها من برنامج آخر باستخدام التعبير البرمجي import
.
لاحظ أنَّ دعم هذه الميزة ما يزال محدودًا، لذا انظر إلى قسم «دعم المتصفحات» قبل استخدامها.
البنية العامة
export { name1, name2, …, nameN };
export { variable1 as name1, variable2 as name2, …, nameN };
export let name1, name2, …, nameN; // also var, function
export let name1 = …, name2 = …, …, nameN; // also var, const
export default expression;
export default function (…) { … } // also class, function*
export default function name1(…) { … } // also class, function*
export { name1 as default, … };
export * from …;
export { name1, name2, …, nameN } from …;
export { import1 as name1, import2 as name2, …, nameN } from …;
nameN
المُعرِّف الذي سيُصدَّر (والذي يمكن استيراده باستخدام التعبير البرمجي import
في سكربت آخر).
الوصف
هنالك لنوعان مختلفان من التصدير، وكل نوعٌ له بنيةٌ عامةٌ مذكورةٌ في القسم السابق.
التصدير الاسمي (named export):
// تصدير دالة مُصرَّحٌ عنها لاحقًا
export { myFunction };
// تصدير قيمة ثابت
export const foo = Math.sqrt(2);
التصدير الافتراضي (default export):
// تصدير دالة
export default function() {}
// تصدير صنف
export default class {}
يُستخدَم التصدير الاسمي لتصدير عدِّة قيم، وعند استيرادها سيكون من الضروري استخدام نفس الاسم لها؛ أما التصدير الافتراضي فيمكن استيراده بأي اسم نشاء؛ لاحظ أنَّه يمكن أن يكون تصديرٌ افتراضيٌ واحدٌ فقط:
export default k = 12; // الملف test.js
// لاحظ أنَّ بإمكاننا استخدام أي اسم عند الاستيراد لأن التصدير كان افتراضيًا
import m from './test'
console.log(m); // 12
لاحظ أنَّ الشكل الآتي لا يدعم التصدير الافتراضي من وحدة (module) مستوردة:
export * from …;
فإذا أردت التصدير الافتراضي فاكتب الشيفرة التالية:
import mod from "mod";
export default mod;
أمثلة
استخدام التصدير الاسمي
يمكننا استخدام الشيفرة الآتية في الوحدة للتصدير الاسمي:
// module "my-module.js"
function cube(x) {
return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export { cube, foo };
ويمكننا حينئذٍ أن نكتب الشيفرة الآتية في سكربتٍ آخر:
import { cube, foo } from 'my-module';
console.log(cube(3)); // 27
console.log(foo); // 4.555806215962888
استخدام التصدير الافتراضي
إذا أردنا تصدير قيمة واحدة من الوحدة، فيمكننا استخدام التصدير الافتراضي:
// module "my-module.js"
export default function cube(x) {
return x * x * x;
}
لاحظ سهولة استيراد التصدير الافتراضي في سكربتٍ آخر:
import cube from 'my-module';
console.log(cube(3)); // 27
يجدر بالذكر أنَّه من غير الممكن استخدام var
أو let
أو const
مع التصدير الافتراضي (export default
).
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | 61 | 54 | غير مدعومة | 47 | 10.1 |
على النقيض من متصفح IE، يدعم المتصفح Edge هذه الميزة.
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).