كما تعلمنا في المقالات السابقة عن تطوير مواقع الويب التي تتكون بشكل أساسي من الواجهة الأمامية والواجهة الخلفية. تعرفنا بشكل مفصل عن الواجهة الأمامية والفرق الملحوظ بين الواجهتين وأهم إطارات العمل الخاصة بالواجهة الامامية. أما اليوم فسنضع بين يديك عزيزي القارئ مقال عن الواجهة الخلفية للويب: مقدمة في Express.js Node.js.
تابع معنا هذا المقال كي تزيد من معلوماتك حول الواجهة الخلفية لمواقع الويب والذي سنشرح فيه نقاط هامة تتعلق بالـ node.js التي تدهشك بكل ما هو مميز وجديد.
وفي حال أردت زيادة مهاراتك في تطوير مواقع الويب الإلكترونية، أو كنت من الأشخاص المبتدئين في هذا المجال فيسرني أن أرشح لك أكاديمية د. محسن التي تقدم كل ما هو جديد ومفيد في عالم البرمجة وتطوير مواقع الويب عن طريق تقديم كورسات تبدأ من الصفر معك وتصل بك حتّى الاحتراف، وكل هذا بأسعار رمزية وبسيطة. لا تتردد في حجز الكورس الذي تريد أن تتعلم أكثر حوله.
ما هي الواجهة الخلفية للويب؟
سأقوم بوضع مثال بسيط أمامك عزيزي القارئ كي توضح لك الأمور بشكل مبسط. على سبيل المثال دخلت إلى موقع ما للتسوق ورأيت ما يعجبك من منتجات وأدوات والخ.. ثم قررت الشراء فقمت بالضغط على زر “شراء” كل هذا الذي تراه أمامك هو واجهة أمامية. أما عملية حساب المشتريات وإضافتها إلى سلتك الخاصة واخبار المسؤولين في الموقع أنك قمت بالشراء وأمور أخرى تتعلق بكل ما لا تراه أمامك، فهو من اختصاص الواجهة الخلفية. أي نصل إلى تعريف موجز وبسيط لتطوير الواجهة الخلفية للويب:
هو عملية كتابة الشيفرات البرمجية التي تعمل على خوادم الويب web server والتي تجعل موقع الويب يعمل خلف الكواليس ويتفاعل مع المستخدمين ويلبي طلباتهم كافة.
تعريف الـ node.js:
Node JS هي بيئة تشغيل الجافا سكريبت على الخادم والتي تتيح للمطورين إنشاء تطبيقات ومواقع تتميز بخدمة فعالة وسريعة باستخدام الجافا سكريبت. بينما إطار العمل هو مجموعة من الأدوات والمكتبات والقواعد والمفاهيم التي تسهل عملية تطوير التطبيقات وتوفر بنية واضحة ومنظمة للتطوير.
يمكن أن تستخدم الـ node js بشكل فردي دون إطار عمل ويمكن أيضاً استخدام إطارات عمل معها لتبسيط العمل فيها وزيادة الفعالية في الإنتاج والتطوير، ومن أهم إطارات العمل الأكثر شهرة مع الـ node.js هي الـ Express.js.
ما هي منصات التشغيل المتوافقة مع الـ Node.js؟
تعد الـ node.js متوافقة مع عدد جيد جداً من منصات التشغيل بما في ذلك:
- Windows
- Mac OS X
- Linux
- Solaris
- FreeBSD
بالإضافة إلى أن الـ Node تدعم منصات السحابة مثل الـ AWS و Azure و Google cloud platform وغيرها الكثير.
ما هي إطارات العمل المتوافقة مع الـ Node.js بالنسبة للواجهة الأمامية؟
هناك العديد من أدوات الواجهة الأمامية التي يمكنك عزيزي المطوّر أن تستخدمها مع الـ node.js منها:
- React
- Vue
- Angular
- Ember
- Backbone
- jQuery
- Svelte
- Pug
- Handlebars
- Marko
وهذا عدد كافي جداً من الإطارات الخاصة بالواجهة الأمامية التي يمكنك أن تستخدمها وتستفيد منها.
ما هي إطارات عمل الـ Node.js؟
تعتبر فئة “أطر عمل Node.js” مجموعة من الأدوات والمكتبات والبرمجيات المصممة خصيصًا لتبسيط وتسريع عملية بناء تطبيقات الويب الخلفية باستخدام بيئة Node.js. تعتمد هذه الإطارات على لغة جافا سكريبت لتطوير الخوادم ومعالجة الطلبات وإدارة البيانات.
وإليك عزيزي القارئ أهم الإطارات المستخدمة في تطوير التطبيقات والمواقع باستخدام الـ node.js:
- Express: يعد من إطارات العمل الشعبية والمشهورة كونها خفيفة الوزن وتستخدم لبناء تطبيقات الويب وتطوير الواجهات الخلفية للمواقع.
- Koa: يعد إطار عمل جيد حيث أنه يستند إلى مكتبة middleware ويستخدم أيضاً async/await بشكل مكثف وهذا ما يجعل الأداء فعال وذو كفاءة عالية.
- Meteor: هو إطار عمل يستخدم لبناء تطبيقات الويب والتطبيقات متعددة الجوانب.
- NestJs: هو إطار عمل يستخدم الـ typescript ويسمح هذا الإطار ببناء تطبيقات الويب والتطبيقات المتقدمة أيضاً.
- Sails Js: يمكننا أن نقول عنه ببساطة أنه إطار عمل مبني على الـ express ويسمح ببناء تطبيقات الويب ذات الحجم الكبير والمتوسط.
وإلى هنا نكون قد ذكرنا لك عزيزي القارئ أهم إطارات العمل الخاصة بالـ node.js والتي يمكنك التعامل معها في تطوير الواجهة الخلفية للويب. لا تتردد في طرح السؤال في كان لديك بعض التساؤلات حول هذه الإطارات الخاصة بالـ node تابع معنا باقي المقال كي تحصل على معلومات أكثر.
الميزات المشتركة لأطر عمل Node.js:
توفر أطر عمل Node.js مجموعة من الميزات والقدرات المتقدمة للمطورين، مما يمكنهم من إنشاء تطبيقات متطورة وسريعة، سنذكر لك عزيزي القارئ هذه الميزات كالتالي:
- معالجة الطلبات والاستجابات: توفير واجهات مبسطة للتعامل مع طلبات الويب وإنشاء استجابات مناسبة.
- توجيه (Routing): التحكم في توجيه الطلبات إلى وظائف المعالجة المناسبة.
- إدارة الجلسات (Session Management): السماح بتتبع حالة المستخدم وتخزين المعلومات بين الطلبات المتعددة.
- التحكم بالمصادقة والتحقق: توفير وظائف لإدارة عمليات تسجيل الدخول وتأكيد الهوية والتحقق من الصلاحيات.
- دعم قواعد البيانات: تسهيل التكامل مع قواعد بيانات مختلفة وتبسيط عمليات الاستعلام والتعديل.
- إعدادات وتكوينات مرنة: توفير تكوينات قابلة للتخصيص لتلبية متطلبات المشروع المختلفة.
- ميزات الأمان المدمجة: توفير حماية أساسية ضد الهجمات الشائعة ومساعدة المطورين في تأمين تطبيقاتهم.
- دعم المجتمع والوثائق: توفر الإطارات المشهورة وثائق تفصيلية ودعم من مجتمع المطورين النشط.
ما هي الخوادم التي تتفق مع الـ node.js؟
تتفق الـ node.js مع مجموعة ذات عدد كبير من خوادم الويب ومنها الآتي:
- Apache
- Nginx
- Microsoft IIS
- Lighttpd
- Caddy
- Gunicorn
وهذه كانت الخوادم الويب التي تتفق معها الـ node.js.
تعريف الـ Express وبعض المعلومات الهامة حولها:
تعد الـ express js إطار عمل(framework) خفيف الوزن لتطوير تطبيقات الويب في الـ node js. يوفر الاكسبريس طرقاً بسيطة وميسرة لإنشاء خوادم ويب وتعريف طرق HTTP وإدارة المسارات والمتغيرات والمتحولات وإرسال الاستجابات وإدارة الجلسات وغيرها الكثير سنذكرها بالتفصيل في الفقرات القادمة.
يمكن استخدام الـ Express لإنشاء أنواع مختلفة من تطبيقات الويب مثل :
- التطبيقات الثابتة (Static Websites)
- التطبيقات الديناميكية (Dynamic Websites)
- تطبيقات الواجهة البرمجية (APIS)
- وتطبيقات (Real time app)
وغيرها العديد، نتمنى أن تكون قد وصلت إليك الفكرة مبسطة وسهلة. وسنتابع الآن مع بعض المعلومات حول الـ express
تاريخ موجز لـ Express.js:
لقد تمّ إنشاء الـ express js بواسطة المطوّر HolowaychuK TJ في عام 2010 كجزء من جهوده من أجل تبسيط تطوير تطبيقات الويب باستخدام الـ Node.js.
على مر السنين تطورت الـ Express وأصبحت فعّالة بشكل قوي ومستخدمة ومشهورة لدى العديد من المطوّرين، وذلك بفضل التطوير المستمر لها من قِبل العديد من المطورين في جميع أنحاء العالم. اليوم يتم الحفاظ على الـ Express بواسطة Node.js Foundation وأصبحت واحدة من أكثر الإطارات التابعة لـ node.js استخداماً على نطاق واسع لتطوير مواقع الويب.
الميزات الرئيسية لـ Express:
تشتهر الـ express ببساطتها ومرونتها مما جعلها الخيار المثالي لكل المبتدئين والمطورين وأصحاب الخبرة، وفيما يلي سنذكر لك عزيزي القارئ أهم ميزاتها التي جعلتها نار على علم في مجال تطوير الواجهة الخلفية:
- دعم البرامج الوسيطة: يقوم Express بتزويد البرامج الوسيطة للتعامل مع المهام المختلفة مثل معالجة الطلب والمصادقة والتحقق من البيانات. يمكن للمطورين دمج البرامج الوسيطة الطرف الثالثة بسهولة أو إنشاء وظائف مخصصة للوسائط المخصصة لتكييف سلوك التطبيق باحتياجاتهم المحددة.
- التوجيه: يوفر Express نظام توجيه قوي يسمح للمطورين بتحديد كيفية استجابة التطبيق لطلبات HTTP المختلفة (الحصول على، عن بعد، وضع، حذف، إلخ). هذا يجعل من السهل إنشاء واجهات برمجة التطبيقات المريحة وبناء تطبيقات الويب مع طرق منظمة.
- محركات templating: على الرغم من أن Express لا يأتي بمحرك مبالغ فيه، إلا أنه يقدم الدعم لمحركات القالب المختلفة مثل Pug و EJS و Billbars. هذا يمكّن المطورين من إنشاء صفحات HTML الديناميكية بسهولة.
- أساليب الأداة المساعدة HTTP: يبسط Express معالجة طلبات HTTP والاستجابات مع أساليبها ومرافقها المدمجة. يمكنك إرسال الردود، والتعامل مع استجابات الخطأ بسهولة.
- تكامل قواعد البيانات: Express هو قاعدة البيانات، مما يسمح للمطورين باستخدام أنظمة قاعدة البيانات المفضلة لديهم، سواء كانت قواعد بيانات علائقية مثل قواعد بيانات MySQL و PostgreSQL أو NOSQL مثل MongoDB.
- إدارة الجلسة: يوفر Express أدوات للتعامل مع جلسات المستخدم، مما يجعل الأمر واضحًا لتنفيذ مصادقة المستخدم والحفاظ على بيانات الجلسة.
- الأمان: يتضمن Express ميزات أمان مدمجة للمساعدة في حماية التطبيق الخاص بك من نقاط الضعف المشتركة، مثل البرمجة النصية عبر المواقع (XSS) وتزوير طلب المواقع (CSRF).
- قابلية التوسع: تم تصميم Express مع وضع الأداء في الاعتبار. إنه خفيف الوزن ويسمح بسهولة التكامل بين التجميع والموازنة الحمل للتعامل مع أحمال حركة المرور العالية.
- التطوير السريع: يبسط Express العديد من جوانب تطوير الويب، مما يسمح للمطورين ببناء تطبيقات الويب بشكل أسرع. تجعل واجهة برمجة التطبيقات (API) البديهية والوسيطة المتاحة بسهولة المهام الشائعة سهلة التنفيذ.
- المجتمع والنظام الإيكولوجي: هو مجتمع كبير ونشط، يحتوي Express على نظام بيئي واسع من المكونات الإضافية والأدوات الوسيطة المتوفرة عبر NPM (Manager Package Manager). هذا يعني أنه يمكنك تمديد وظائف Express دون عناء.
وبهذا نكون قد ذكرنا لك عزيزي القارئ أهم الميزات الأساسية الخاصة بالـ EXPRESS ووضعنا بين يديك حجر الأساس الذي سيفتح لك مجالات مختلفة وواسعة في تطوير الواجهة الخلفية لمواقع الويب.
ما هي streams في الـ node.js؟
تعد streams طريقة من أجل معالجة البيانات في الـ node.js والتي تسمح لنا بقراءة وكتابة البيانات بشكل غير متزامن وتدفق البيانات عبر عدة مراحل مع وجود عدة حوالات تقبل التعديل للبيانات المرسلة، وباستخدام الـ streams يمكننا تحسين أداء التطبيقات التي تحتاج معالجة كميات كبيرة من البيانات والعمل مع الملفات والشبكات.
ما هو nest.js ولماذا يعد منافس للـ express.js ؟
هو إطار عمل خاص بالـ node.js لتطبيقات الخادم والذي:
- يستند إلى typescript لهيكلة الكود من خلال استخدام مزايا typescript مثل النماذج والواجهات والتعليقات والأنواع.
- يستخدم معايير ممتازة للمفاهيم والممارسات المستوحاة من RXJS , Angular.
- يتميز أيضاً بتوفير العديد من الميزات الفوائد لتطوير الـ node.js بشكل سريع وأكثر كفاءة.
- يدعم العديد من البروتوكولات والبرامج النصية مثل: Fastify, GraphQl, Websocket.
- يستخدم صارم الحقن لتحسن إدارة التعبئة وتركيب المكونات.
- يتيح أيضاً استخدام مكتبات النود node.js واختبار التطبيقات بسهولة باستخدام jest.
للاستفادة من nest.js يمكنك البدء بتثبيته باستخدام npm وبناء تطبيقك بشكل مشابه لتطبيق الـ node.js العادي باستخدام مكونات ومستندات ديناميكية قوية.
كيف يكون الاتصال بخوادم الويب (web server) في node js؟
يمكن الاتصال بخوادم الويب في الـ node باستخدام المكتبات المدمجة فيها وهي مكتبات HTTP و HTTPS.
حيث تمكننا هذه المكتبات من استلام الردود من الخوادم الخارجية وأيضاً ارسال الطلبات. شرح بسيط على ذلك لأهم التعليمات التي تجعل الموقع أكثر فعالية:
- يتم استخدام الدالة https.get من أجل ارسال طلب من نوع GET الى الموقع المحدد. نمرر URL كمعامل للدالة ويمرر له أيضاً وظيفة الاستجابة التي تتم معالجة الرد فيها باستخدام “res” الممررة كمعامل.
- يتم استخدام الأمر res.on للاستماع إلى بيانات الرد المستلمة ن الخادم الخارجي. يتم استخدام تعليمة process.stdout.write من أجل طباعة البيانات المستلمة في سجل الإخراج القياسي.
- وكذلك الأمر يتم استخدام التعليمة console.error للتحقق من وجود أي أخطاء في الاتصال بالخادم الخارجي.
الخاتمة
وإلى هنا نكون قد وصلنا إلى ختام مقالنا لليوم وهو الواجهة الخلفية للويب: مقدمة في express.js node.js نتمنى أن تكون قد حصلت على المعلومات المفيدة عزيزي القارئ حول الواجهة الخلفية. فقد وضعنا بين يديك معلومات كثيرة على شكل أسئلة وأجوبة تستطيع من خلالها أن تلم بكل ما هو مفيد حول الـ node.js. منها تعاريف خاصة بكل إطار عمل وميزات الـ node.js والعديد من الأمور الهامة التي ستساعدك في فهم تطوير الواجهة الخلفية. لا تتردد في التواصل معنا في حال وجود أي استفسارات حول مقالنا هذا.
كما أنه باستطاعتك عزيزي القارئ أن تبدأ الإبحار والغوص إلى العمق في مجال البرمجة وتطوير مواقع الويب من خلال التعلم من الصفر حتى تصل إلى الاحترافية وكل ذلك عبر حجز كورس من أكاديمية د. محسن. التي ستكون معك لتحصل على المعلومات المفيدة والخبرة الكافية لتدخل بها سوق العمل، لا تتردد في التواصل مع الأكاديمية في حال أردت أن تبدأ مسيرتك في عالم البرمجة وتطوير المواقع الإلكترونية والتطبيقات.
المراجع