دروس الوحدة (1/4)
وحدات ESM: الاستيراد / التصدير
عندما ينمو البرنامج، يصبح الاحتفاظ بكل شيء في ملف واحد أمراً محرجاً. جافا سكريبت الحديثة يحل مشكلة وحدات ES (ESM): كل ملف عبارة عن وحدة يمكنها تصدير يمكن للوظائف والثوابت والفئات والملفات الأخرى استيرادها.
محمي_INLINE_7
يمكنك تصدير ما تريد نشره للعامة. شكلين:
// somma.js
export function somma(a, b) {
return a + b;
}
export const PI = 3.14159;أو في نهاية الملف:
function somma(a, b) {
return a + b;
}
const PI = 3.14159;
export { somma, PI };محمي_INLINE_8
من ملف آخر:
// app.js
import { somma, PI } from './somma.js';
console.log(somma(1, 2)); // 3
console.log(PI); // 3.14159الكائن { somma, PI } هو قائمة الأسماء التي تريد استيرادها. يجب أن تتطابق مع
الأسماء المصدرة
التصدير الافتراضي
يمكن أن تحتوي كل وحدة على تصدير واحد "رئيسي"، بدون اسم:
// log.js
export default function log(msg) {
console.log('[app]', msg);
}يمكنك استيراده عن طريق اختيار الاسم محليًا:
import log from './log.js';
log('ciao');إعادة تسمية
import { somma as plus } from './somma.js';
export { somma as add } from './somma.js'; // re-export"مساحة اسم" واحدة لكل ملف
الوحدات ** معزولة **: لا ينتهي المتغير المعلن في ملف في النطاق العام. أنت
يجب عليك تصديرها بشكل صريح لجعلها مرئية في مكان آخر. وهذا تحسن كبير
JS للمدرسة القديمة حيث تمت مشاركة كل <script> window.
جربه
في التمارين أدناه لن تكتب بناء جملة حقيقي import/export — صندوق الحماية عبارة عن وحدة واحدة
ملف. وبدلاً من ذلك، سنطلب منك تنظيم التعليمات البرمجية في وظائف منفصلة صغيرة
التعاون، كما تفعل لو كان كل منهما في ملف مختلف.
حدد دالتين منفصلتين: `square(n)` (إرجاع n*n) و`sumOfSquares(a, b)` التي تستخدم المربع. فكر في المربع على أنه "تم تصديره" من ملف وإعادة استخدامه بواسطة sumOfSquares.
إظهار التلميح
مجموع المربعات (أ، ب) = المربع (أ) + المربع (ب)
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
حدد `isEven(n)` (صحيح إذا كان n زوجيًا) و`countEven(arr)` الذي يستخدم isEven لحساب العناصر الزوجية في المصفوفة. احتفظ بهما كوظيفتين منفصلتين.
إظهار التلميح
arr.filter(isEven).الطول
الحل متاح بعد 3 من المحاولات