هذان نظاما وحدات JavaScript لتقسيم الكود عبر ملفات.
ES Modules (ESM) — المعيار الحديث
js
// import / export, used in browsers and modern Node
import { sum } from "./math.js";
defaultThing ;
x = ;
() {};
هذان نظاما وحدات JavaScript لتقسيم الكود عبر ملفات.
// import / export, used in browsers and modern Node
import { sum } from "./math.js";
defaultThing ;
x = ;
() {};
const { sum } = require("./math");
module.exports = { x: 1 };
| ES Modules | CommonJS | |
|---|---|---|
| الصيغة | import/export | require/module.exports |
| التحميل | ثابت، غير متزامن | ديناميكي، متزامن |
| قابل للتحليل | ✅ → tree-shaking | ❌ أصعب |
| الربط | مباشر (قراءة فقط) | قيمة مسخوخة |
this في الأعلى | undefined | module.exports |
الثابت يعني أن استيراد ESM معروف في وقت التحليل، مما يسمح لأدوات التجميع بـ tree-shaking (حذف الصادرات غير المستخدمة). require في CommonJS ديناميكي (يمكنك require بشكل مشروط)، لذا لا يمكن تحليله بسهولة.
{ "type": "module" } // in package.json, or use the .mjs extension
لا يمكنك require() حزمة ESM فقط من CommonJS؛ الخلط بينهما له حواف خشنة. استيراد ESM أيضًا روابط مباشرة — إذا غير المُصدِّر القيمة، يرى المستوردون القيمة الجديدة (CJS يعطيك نسخة لقطة).
ESM هو المستقبل (أصلي في المتصفح، tree-shakeable، await على المستوى الأعلى).
فضّل ESM للكود الجديد؛ افهم CommonJS لأن الكثير من نظام Node البيئي لا يزال يستخدمه.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع