export

من موسوعة حسوب
< JavaScript
مراجعة 11:25، 31 ديسمبر 2017 بواسطة عبد اللطيف ايمش (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

التعبير البرمجي 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 هذه الميزة.

مصادر ومواصفات