البدايةالهيكلية HMVC

نمط HMVC في كوكب Kawkab

نمط HMVC (Hierarchical Model-View-Controller) هو امتداد لنمط MVC التقليدي، حيث يتم تنظيم التطبيق في وحدات مستقلة. في كوكب، كل وحدة تحتوي على الـ MVC الخاص بها.

مفهوم HMVC

ما هو HMVC؟

  • H تعني Hierarchical (هرمي)
  • MVC هي نفس المكونات الأساسية (النموذج، العرض، المتحكم)
  • كل وحدة تعمل بشكل مستقل
  • يمكن للوحدات التواصل مع بعضها البعض

هيكل الوحدات

app/
└── main/
    └── controllers/
        ├── index.ts         // يمثل "/"
        ├── about.ts         // يمثل "/about"
        └── users/
            ├── index.ts     // يمثل "/users"
            └── [id].ts      // يمثل "/users/:id"

أنواع المسارات

1. المسارات الثابتة

// app/modules/main/controllers/about.ts
 
import { BaseController, req } from "kawkab";
 
export default class extends BaseController {
    get() {
        return {
            message: "صفحة حول"
        }
    }
}

2. المسارات الديناميكية

// app/modules/main/controllers/users/[id].ts
 
import { BaseController, req } from "kawkab";
 
export default class extends BaseController {
    get() {
        return {
            message: `المستخدم ${req.var('id')}`
        }
    }
}

إنشاء وحدة جديدة

يمكنك إنشاء وحدة جديدة باستخدام الأمر:

npm run kawkab module:make blog

مثال على الوحدات

1. وحدة المدونة

// app/modules/blog/controllers/posts/index.ts
 
import { BaseController, req } from "kawkab";
 
export default class extends BaseController {
    get() {
        return {
            message: "مقالات المدونة",
            data: [
                { title: "المقال الأول" },
                { title: "المقال الثاني" }
            ]
        };
    }
}

2. وحدة المتجر

// app/modules/shop/controllers/products/index.ts
 
import { BaseController, req } from "kawkab";
 
export default class extends BaseController {
    get() {
        return {
            message: "منتجات المتجر",
            data: [
                { name: "منتج 1" },
                { name: "منتج 2" }
            ]
        };
    }
}

مميزات HMVC في كوكب

1. تنظيم أفضل للكود

  • كل وحدة مستقلة بذاتها
  • سهولة إدارة المشاريع الكبيرة
  • تقسيم المنطق حسب الوظيفة

2. إعادة استخدام الكود

  • يمكن استخدام نفس الوحدة في مشاريع مختلفة
  • مشاركة الوظائف بين الوحدات
  • تقليل تكرار الكود

3. صيانة أسهل

  • تعديل وحدة لا يؤثر على الوحدات الأخرى
  • اختبار كل وحدة بشكل منفصل
  • تحديث الوظائف بسهولة

أفضل الممارسات

  1. تقسيم منطقي للوحدات

    • كل وحدة تمثل جزء مستقل من التطبيق
    • تجنب التداخل بين الوحدات
  2. الاستقلالية

    • كل وحدة تعمل بشكل مستقل
    • تقليل الاعتماد بين الوحدات
  3. إعادة الاستخدام

    • تصميم الوحدات بحيث يمكن إعادة استخدامها
    • مشاركة المكونات المشتركة

الخاتمة

نمط HMVC في كوكب يوفر:

  • تنظيم أفضل للمشاريع الكبيرة
  • مرونة في إدارة الوحدات
  • قابلية للتوسع والصيانة
  • إمكانية إعادة استخدام الكود

يمكنك البدء باستخدام الوحدة الرئيسية main ثم إضافة وحدات جديدة حسب احتياجات مشروعك.