🟩 شرح Node.js

CommonJS مقابل ES Modules

نظاما وحدات في Node

يدعم Node طريقتين لتقسيم الكود إلى ملفات (وحدات):

  1. CommonJS — النظام التقليدي (require / module.exports).
  2. ES Modules — المعيار الحديث (import / export).

CommonJS

ملف math.js:

function add(a, b) {
  return a + b;
}

module.exports = { add };

استيراده:

const { add } = require("./math");
console.log(add(2, 3));   // 5

ES Modules

ملف math.mjs (أو مع "type": "module" في package.json):

export function add(a, b) {
  return a + b;
}

export default function multiply(a, b) {
  return a * b;
}

استيراده:

import multiply, { add } from "./math.js";
console.log(add(2, 3));        // 5
console.log(multiply(2, 3));   // 6

كيف تفعّل ES Modules؟

إحدى طريقتين:

  • امتداد الملف .mjs.
  • أضف في package.json:
{
  "type": "module"
}

مقارنة سريعة

CommonJSES Modules
الاستيرادrequire()import
التصديرmodule.exportsexport
التحميلمتزامنغير متزامن
الافتراضيالأقدمالموصى به حديثًا

💡 المشاريع الحديثة تتّجه إلى ES Modules — وهو نفس نظام المتصفّح، ما يوحّد الخبرة بين الواجهة والخلفية.

أخطاء شائعة

  • خلط require وimport في نفس الملف.
  • نسيان امتداد .js في مسارات الاستيراد عند ES Modules.

🎯 التالي: npm وملف package.json بعمق.