اليوم ٤٨ من تعلم MERN Stack

أنا في اليوم الثامن والأربعين من رحلتي في هندسة الـ full-stack.

بالأمس، انتقلت بالكود الخاص بي إلى بنية MVC. واليوم، قمت بتحسين طبقة النموذج (model layer) باستخدام JavaScript Classes والبرمجة كائنية التوجه (Object-Oriented Programming).

توقفت عن استخدام تعريفات الكائنات غير المنظمة. بدلاً من ذلك، قمت ببناء فئات (classes) قابلة لإعادة الاستخدام لإدارة عمليات الملفات وتخزين البيانات. هذا التغيير يحول السكربتات البسيطة إلى محركات قابلة للتوسع.

إليكم كيف قمت بهيكلة الكود الخاص بي في home.js:

  • الـ Constructor: أستخدم إطار عمل ES6 class لإنشاء قالب بيانات موحد. كل إدخال لمنزل يتضمن الآن الاسم، والسعر، والموقع، والتقييم، ورابط الصورة (photo URL). يضمن هذا اتساق البيانات عبر الخادم.

  • طريقة الـ Save: قمت بإنشاء طريقة .save(). تقوم هذه الطريقة بقراءة البيانات الموجودة بشكل غير متزامن (asynchronously)، ثم تستخدم fs.writeFile() لتحديث ملف homesdata.json. هذا يستبدل المصفوفات العامة (global arrays) بعملية تخزين منظمة.

  • الطرق الثابتة (Static Methods): قمت بتنفيذ طرق ثابتة لاسترجاع البيانات. أستخدم static fetchAll() لسحب السجلات من القرص. يتيح ذلك للمتحكمات (controllers) الوصول إلى البيانات دون الحاجة لإنشاء مثيل (instance) جديد من الفئة أولاً.

استخدام الـ classes يجعل الكود الخاص بي أكثر نظافة وأسهل في التوسع.

المصدر: https://dev.to/ali_hamza_589ec7b3eb6688d/day-48-of-leaning-mern-stack-123n