NahdaAIنهضة
Node.js • المستوى الرابع • الدرس 1

هيكلة معمارية المشروع الحقيقي (MVC Architecture)

العودة لفهرس المسار

أهداف الدرس العلمية

  • تنظيم كود المشروع باستخدام نمط التصميم MVC (Model-View-Controller).
  • فصل مسارات الراوتر عن المنطق التنفيذى لتسهيل التوسع واختبار الأكواد.
  • إدارة كائنات Models للاتصال بقواعد البيانات واستخراج البيانات بأمان.
  • معالجة استجابات أخطاء HTTP (404 Not Found & 400 Bad Request) بداخل المتحكمات.

1. ما هي معمارية MVC؟

نمط Model-View-Controller هو الهيكل القياسي لبناء تطبيقات البرمجة الخلفية الضخمة، حيث يهدف إلى فصل هواجس المشروع (Separation of Concerns) لمنع تضخم ملف واحد ولضمان سهولة التعديل والصيانة.

bash
📁 project-root/
├── 📁 models/          # 1. الموديل: معالجة قواعد البيانات والهياكل
│   └── userModel.js
├── 📁 controllers/     # 2. المتحكم: منطق التطبيق واستقبال الطلبات
│   └── userController.js
├── 📁 routes/          # 3. المسارات: توجيه الروابط إلى المتحكم المناسب
│   └── userRoutes.js
└── server.js           # نقطة الانطلاق الرئيسية

2. أدوار المكونات الثلاثة

📊 Model

يتعامل مباشرة مع قواعد البيانات (مثل MongoDB أو PostgreSQL) لإجراء استعلامات الإدراج والجلب.

⚙️ Controller

يحتوي على المنطق البرمجي، يتحقق من صحة المدخلات، ويقوم باستدعاء الموديل لإرجاع الاستجابة.

🛣️ Router

يستقبل الطلبات القادمة عبر الشبكة (مثل GET /api/users) ويوجهها نحو الدالة المناسبة بـ Controller.

التطبيق العملي المباشر

تحدي الدرس الأول: التوسع في نمط MVC ومعالجة الحالات

قم بالتعديل على الكود في المحرر أدناه لتحويل محاكي MVC إلى معالج كامل للبيانات:

  1. أضف دالة createUser بداخل userModel لإضافة مستخدم جديد إلى مصفوفة البيانات.
  2. أضف تحققاً في getUserProfile لإرجاع حالة 404 وعنوان "المستخدم غير موجود" عند عدم العثور عليه.
  3. أضف دالة جديدة createNewUser بداخل userController تتحقق من وجود name و email وترجع حالة 201 عند النجاح.
  4. قم بمحاكاة طلبات GET و POST واختبار طباعة المخرجات المنظمة بـ console.log.
⏳ جارٍ تحميل المحرر التفاعلي...