البدايةالوحدات

الوحدات (Modules) في إطار العمل كوكب Kawkab

إطار العمل كوكب Kawkab يدعم بنية HMVC (Hierarchical Model-View-Controller) لتمكينك من بناء تطبيقات مرنة ومقسمة إلى وحدات مستقلة. يمكن لكل وحدة أن تحتوي على جميع الأجزاء اللازمة للعمل، مثل Controllers، Services، Repositories، و DTOs… يتم إنشاء الوحدة باستخدام الأمر module:make، ويتم تثبيت وحدة افتراضية باسم main للتعامل مع بنية MVC التقليدية لو اردت تركها وحدها لاعتبراها MVC.


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

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

npm run kawkab module:make <name>

استبدل <name> بإسم الوحدة الجديدة.

المخرجات عند تنفيذ الأمر

عند تنفيذ هذا الأمر، سيتم إنشاء هيكل وحدة جديدة في المشروع يتضمن:

  • module.ts: ملف تعريف الوحدة، المسؤول عن إعداد الوحدة وإدارتها.

بنية الوحدة

ملف module.ts

ملف module.ts هو القلب النابض لكل وحدة. يتم استخدامه لتعريف اسم الوحدة، حالتها (مفعلة أم لا)، وأي إعدادات أو تكوينات تحتاجها الوحدة.

مثال على محتوى ملف module.ts:

import { BaseModule } from "kawkab";
 
export class Module extends BaseModule {
    /**
     * يُستخدم لتحديد اسم الوحدة.
     * 
     * @returns {string} اسم الوحدة.
     */
    name(): string {
        return "main"; // قم بتغيير الاسم ليطابق اسم الوحدة
    }
 
    /**
     * يتحقق مما إذا كانت الوحدة مفعلة أم لا.
     * 
     * @returns {boolean} `true` إذا كانت مفعلة، `false` إذا كانت معطلة.
     */
    isEnabled(): boolean {
        return true;
    }
 
    /**
     * يتم استدعاء هذا المنهج عند بدء تشغيل التطبيق لمرة واحدة فقط.
     * يُستخدم لتسجيل وإعداد الوحدة.
     */
    register() {
        this.module(this, __dirname); // يسجل الوحدة بناءً على مسارها
    }
 
    /**
     * يتم استدعاء هذا المنهج مع كل طلب وارد.
     * يمكن استخدامه لتكوين إعدادات إضافية أو خدمات مخصصة.
     */
    boot() {
        // أضف الكود هنا إذا لزم الأمر
    }
}

المجلدات داخل الوحدة

  1. controllers: يحتوي على وحدات التحكم الخاصة بالوحدة. هذه الوحدات مسؤولة عن معالجة الطلبات والتفاعل مع الخدمات والنماذج.
  2. services: الخدمات التي تحتوي على المنطق الأساسي للعمل. تساعد في تنظيم العمليات المعقدة.
  3. repositories: طبقة الوصول إلى البيانات التي تتفاعل مع قواعد البيانات.
  4. dtos: كائنات نقل البيانات التي تُستخدم لتعريف البيانات القادمة أو المرسلة من الوحدة.
  5. وغيرهم كما تود …

الوحدة الافتراضية main

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

استخدام وحدة main

  • إذا كنت تفضل العمل ببنية MVC فقط، يمكنك استخدام الوحدة main مباشرة دون الحاجة إلى إنشاء وحدات إضافية.
  • ملف module.ts الخاص بـ main جاهز ويحتوي على الإعدادات الافتراضية.

التعامل مع بنية HMVC

بنية HMVC تجعل كل وحدة مستقلة وقابلة لإعادة الاستخدام. لكل وحدة ملف module.ts خاص بها يتحكم في:

  • تسجيل الوحدة عند بدء تشغيل التطبيق.
  • تفعيل أو تعطيل الوحدة.
  • معالجة التكوينات اللازمة عند استقبال الطلبات.

فوائد بنية HMVC في Kawkab:

  1. إعادة استخدام الكود: يمكن استخدام الوحدات في مشاريع متعددة بسهولة.
  2. تقسيم واضح: تقسم التطبيق إلى وحدات مستقلة مما يسهل التطوير والصيانة.
  3. مرونة: يمكنك إضافة أو تعطيل الوحدات بسهولة دون التأثير على التطبيق بالكامل.

مثال على إنشاء وحدة جديدة

الأمر

npm run kawkab module:make users

الهيكل الناتج

app/
├── users/
│   ├── controllers/
│   ├── services/
│   ├── repositories/
│   ├── dtos/
│   └── module.ts

إعداد ملف module.ts للوحدة users

import { BaseModule } from "kawkab";
 
export class Module extends BaseModule {
    name(): string {
        return "users";
    }
 
    isEnabled(): boolean {
        return true;
    }
 
    register() {
        this.module(this, __dirname);
    }
 
    boot() {
        // تخصيص الإعدادات أو الخدمات للوحدة إذا لزم الأمر
    }
}

خاتمة

تُعد الوحدات في كوكب Kawkab جزءًا أساسيًا من تصميم التطبيقات باستخدام بنية HMVC. سواء كنت تفضل بنية MVC التقليدية أو تريد الاستفادة من HMVC لتقسيم التطبيق إلى وحدات مستقلة، يضمن لك Kawkab المرونة والكفاءة لتطوير تطبيقات قابلة للتوسع والصيانة بسهولة.