برنامج تعليمي حول إطار عمل Node.js Express.js
⚡ ملخص ذكي
Express.js هو إطار عمل بسيط لتطبيقات الويب Node.js يضيف التوجيه والبرمجيات الوسيطة وعرض القوالب إلى وحدة HTTP الأساسية، بحيث تصل التطبيقات أحادية الصفحة ومتعددة الصفحات والتطبيقات الهجينة إلى خادم يعمل في عدد قليل جدًا من الأسطر.

سنتناول في هذا الدرس إطار عمل Express. تم تصميم هذا الإطار ليكون بمثابة إطار عمل بسيط ومرن لتطبيقات الويب باستخدام Node.js، حيث يوفر مجموعة قوية من الميزات لبناء تطبيقات الويب أحادية الصفحة ومتعددة الصفحات والهجينة.
ما هو Express.js؟
Express.js هو إطار عمل لخادم تطبيقات الويب Node.js، وهو مصمم خصيصًا لبناء تطبيقات الويب أحادية الصفحة ومتعددة الصفحات والهجينة.
أصبح إطار عمل الخادم القياسي لـ Node.js. يُعد Express الجزء الخلفي من شيء يُعرف باسم حزمة MEAN.
توجيه طبقات Express والبرمجيات الوسيطة فوق بروتوكول HTTP الأساسي في Node.js، تيارات وواجهات برمجة تطبيقات الأحداث.
MEAN هو مجاني ومفتوح المصدر Javaسيناريو مجموعة برمجيات لبناء مواقع الويب الديناميكية وتطبيقات الويب والتي تحتوي على المكونات التالية؛
1) MongoDB — قاعدة بيانات NoSQL القياسية
2) Express.js — إطار عمل تطبيقات الويب الافتراضي
3) AngularJS - ال Javaإطار عمل MVC النصي المستخدم لتطبيقات الويب
4) Node.js — إطار عمل يُستخدم لتطبيقات الخادم والشبكات القابلة للتوسع.
يجعل إطار عمل Express.js من السهل جدًا تطوير تطبيق يمكن استخدامه للتعامل مع أنواع متعددة من الطلبات مثل طلبات GET وPUT وPOST وDELETE.
تثبيت واستخدام Express
يتم تثبيت Express عبر Node Package Manager. ويمكن القيام بذلك عن طريق تنفيذ السطر التالي في سطر الأوامر
تثبيت npm السريع
يطلب الأمر أعلاه من مدير حزم Node تنزيل حزمة express المطلوبة نماذج وقم بتثبيتها وفقًا لذلك.
ملاحظة حول الإصدار: يقوم npm الآن بتثبيت Express 5.2؛ بينما لا تزال العديد من المشاريع تستخدم Express 4. قم بتشغيل الأمثلة أدناه على كليهما إصدار Node.js المدعوم.
دعونا نستخدم إطار عمل Express المثبت حديثًا ونقوم بإنشاء تطبيق "Hello World" بسيط.
سيقوم تطبيقنا بإنشاء تطبيق بسيط وحدة الخادم والذي سيستمع على رقم المنفذ 3000. في مثالنا، إذا تم تقديم طلب من خلال المتصفح على رقم المنفذ هذا، فسيرسل تطبيق الخادم استجابة "Hello World" إلى العميل.
var express=require('express'); var app=express(); app.get('/',function(req,res) { res.send('Hello World!'); }); var server=app.listen(3000,function() {});
Code التفسير:
- في السطر الأول من التعليمات البرمجية، نستخدم الدالة require لتضمين "الوحدة النمطية السريعة".
- قبل أن نتمكن من البدء في استخدام الوحدة Express، نحتاج إلى إنشاء كائن منها.
- هنا نقوم بإنشاء دالة رد نداء. سيتم استدعاء هذه الدالة كلما تصفح أي شخص إلى الصفحة الرئيسية لتطبيقنا على الويب، وهي http://localhost:3000. ستُستخدم دالة رد النداء لإرسال السلسلة النصية "Hello World" إلى صفحة الويب.
- في وظيفة رد الاتصال، نقوم بإرسال السلسلة "Hello World" مرة أخرى إلى العميل. يتم استخدام المعلمة "res" لإرسال المحتوى مرة أخرى إلى صفحة الويب. معلمة "res" هذه هي شيء توفره وحدة "الطلب" لتمكين الشخص من إرسال المحتوى مرة أخرى إلى صفحة الويب.
- ثم نستخدم وظيفة الاستماع لجعل تطبيق الخادم الخاص بنا يستمع إلى طلبات العميل على المنفذ رقم 3000. يمكنك تحديد أي منفذ متاح هنا.
إذا تم تنفيذ الأمر بنجاح، سيتم عرض الإخراج التالي عند تشغيل الكود الخاص بك في المتصفح.
الإخراج:
من الإخراج،
- يمكنك أن ترى ذلك بوضوح إذا تصفحت إلى URL عند الاتصال بـ localhost على المنفذ 3000، سترى السلسلة 'Hello World' معروضة على الصفحة.
- لأننا حددنا في الكود الخاص بنا تحديدًا أن يستمع الخادم على المنفذ رقم 3000، فإننا قادرون على عرض المخرجات عند تصفح هذا الموقع. URL.
ما هي الطرق؟
إن مسار الجذر الواحد ليس سوى نقطة البداية.
يحدد التوجيه الطريقة التي يستجيب بها التطبيق لطلب العميل إلى نقطة نهاية معينة.
على سبيل المثال، يمكن للعميل إرسال طلب HTTP من نوع GET أو POST أو PUT أو DELETE لأغراض مختلفة URL مثل تلك الموضحة أدناه؛
http://localhost:3000/Books http://localhost:3000/Students
في المثال أعلاه ،
- إذا تم تقديم طلب GET لأول URLإذاً، من الأفضل أن تكون الإجابة عبارة عن قائمة بالكتب.
- إذا تم تقديم طلب GET للثانية URLإذاً، من الأفضل أن تكون الاستجابة عبارة عن قائمة بالطلاب.
- بناءً على ذلك URL عند الوصول إلى هذا الجزء، يتم استدعاء وظيفة مختلفة على خادم الويب، وبناءً على ذلك، يتم إرسال الاستجابة إلى العميل. هذا هو مفهوم التوجيه.
يمكن أن يحتوي كل مسار على وظيفة معالج واحدة أو أكثر، والتي يتم تنفيذها عند مطابقة المسار.
يتم عرض بناء الجملة العام للمسار أدناه
app.METHOD(PATH, HANDLER)
حيث،
1) التطبيق هو مثيل للوحدة النمطية السريعة
2) الطريقة هي طريقة طلب HTTP (GET أو POST أو PUT أو DELETE)
3) PATH هو مسار على الخادم.
4) المعالج هي الوظيفة التي يتم تنفيذها عند مطابقة المسار.
| اتصل | أطلب | الهدف |
|---|---|---|
| app.get(PATH, HANDLER) | للحصول على | عرض |
| app.post(PATH, HANDLER) | سأعين | إنشاء |
| app.put(PATH, HANDLER) | ضع | استبدل |
| app.delete(PATH, HANDLER) | حذف | حذف |
| app.route(PATH) | بالسلاسل | مديرو المجموعات |
| app.use(HANDLER) | اي | برنامج وسيط التثبيت |
⚠️ اكسبرس 5 ملاحظة: هذه التوقيعات لم تتغير، ولكن app.del() أصبحت app.delete()، و res.sendfile() أصبحت res.sendFile()، وأصبحت الأحرف البديلة الآن بحاجة إلى أسماء مثل /*splat.
لنلقِ نظرة على مثال لكيفية تطبيق المسارات في Express. سيُنشئ مثالنا 3 مسارات كما يلي:
- مسار /Node الذي سيعرض السلسلة "البرنامج التعليمي على العقدة" إذا تم الوصول إلى هذا المسار
- مسار /Angular والذي سيعرض السلسلة "Tutorial on Angular" في حالة الوصول إلى هذا المسار
- مسار افتراضي / سيعرض النص "مرحباً بك في Guru99 درسًا تعليميًا.
سيظل رمزنا الأساسي كما هو في الأمثلة السابقة. المقتطف أدناه عبارة عن وظيفة إضافية لعرض كيفية تنفيذ التوجيه.
var express = require('express'); var app = express(); app.route('/Node').get(function(req,res) { res.send("Tutorial on Node"); }); app.route('/Angular').get(function(req,res) { res.send("Tutorial on Angular"); }); app.get('/',function(req,res){ res.send('Welcome to Guru99 Tutorials'); });
Code التفسير:
- هنا نحدد مسارًا إذا كان URL http://localhost:3000/Node is selected in the browser. To the route, we are attaching a callback function which will be called when we browse to the Node URLتحتوي الدالة على معلَمَين.
- المعلمة الرئيسية التي سنستخدمها هي المعلمة 'res'، والتي يمكن استخدامها لإرسال المعلومات مرة أخرى إلى العميل.
- تحتوي المعلمة "req" على معلومات حول الطلب الذي يتم تقديمه. في بعض الأحيان يمكن إرسال معلمات إضافية كجزء من الطلب الذي يتم تقديمه، وبالتالي يمكن استخدام المعلمة 'req' للعثور على المعلمات الإضافية التي يتم إرسالها.
- نحن نستخدم وظيفة الإرسال لإرسال السلسلة "البرنامج التعليمي على العقدة" مرة أخرى إلى العميل إذا تم اختيار مسار العقدة.
- هنا نحدد مسارًا إذا كان URL http://localhost:3000/Angular is selected in the browser. To the route, we are attaching a callback function which will be called when we browse to the Angular URL.
- نحن نستخدم وظيفة الإرسال لإرسال السلسلة "Tutorial on Angular" مرة أخرى إلى العميل إذا تم اختيار المسار Angular.
- هذا هو المسار الافتراضي الذي يتم اختياره عند تصفح جذر التطبيق — http://localhost:3000. عند اختيار المسار الافتراضي، تظهر الرسالة "مرحبًا بك في Guruسيتم إرسال "99 درسًا تعليميًا" إلى العميل.
إذا تم تنفيذ الأمر بنجاح، سيتم عرض الإخراج التالي عند تشغيل الكود الخاص بك في المتصفح.
الإخراج:
من الإخراج،
- يمكنك أن ترى ذلك بوضوح إذا تصفحت إلى URL عند الاتصال بـ localhost على المنفذ 3000، سترى السلسلة 'Welcome to Guruتم عرض 99 درسًا تعليميًا على الصفحة.
- لأننا ذكرنا في الكود الخاص بنا أن الوضع الافتراضي لدينا URL سيتم عرض هذه الرسالة.
بعد ذلك، انتقل إلى /Node.
من الإخراج،
- يمكنك أن ترى ذلك إذا كان URL تم تغييرها إلى /Node، وسيتم اختيار مسار Node ذي الصلة وسيتم عرض السلسلة "Tutorial on Node".
ثم انتقل إلى /Angular.
من الإخراج،
- يمكنك أن ترى ذلك إذا كان URL تم تغييرها إلى /Angular، وسيتم اختيار مسار Node ذي الصلة وسيتم عرض السلسلة "Tutorial on Angular".
نموذج لخادم الويب باستخدام Express.js
من المثال السابق، رأينا كيف يمكننا تحديد المخرجات التي سيتم عرضها بناءً على التوجيه. هذا النوع من التوجيه هو المستخدم في معظم تطبيقات الويب الحديثة. أما الجزء الآخر من خادم الويب فيتعلق باستخدام القوالب في Node.js.
عند إنشاء تطبيقات Node.js سريعة وفعّالة، يُعدّ استخدام القوالب طريقة سهلة وسريعة. تتوفر العديد من أطر العمل في السوق لإنشاء القوالب. في حالتنا، سنستخدم إطار عمل Jade كمثال.
يتم تثبيت Jade عبر مدير حزم Node. ويمكن القيام بذلك عن طريق تنفيذ السطر التالي في سطر الأوامر.
تثبيت npm اليشم
يطلب الأمر أعلاه من مدير حزم Node تنزيل وحدات Jade المطلوبة وتثبيتها وفقًا لذلك.
NOTE: في الإصدار الأخير من Node jade تم إهماله. بدلا من ذلك، استخدم الصلصال.
⚠️ المكافئ الحديث: تثبيت كلب البجأعد تسمية الملف index.jade إلى index.pug، ثم عيّن قيمة app.set('view engine','pug'). لن تتلقى حزمة jade أي تحديثات؛ وستظل الخطوات التالية قيد التنفيذ.
لنستخدم إطار عمل Jade الذي قمنا بتثبيته حديثًا وننشئ بعض القوالب الأساسية.
الخطوة 1) الخطوة الأولى هي إنشاء قالب Jade. أنشئ ملفًا باسم index.jade وأدرج الكود التالي. تأكد من إنشاء الملف في مجلد "views".
- نحدد هنا أنه سيتم تغيير عنوان الصفحة إلى أي قيمة يتم تمريرها عند استدعاء هذا القالب.
- كما نحدد أن النص الموجود في علامة العنوان سيتم استبداله بأي نص يتم تمريره في قالب Jade.
فيما يلي كود التطبيق الذي يقوم بعرضه.
var express=require('express'); var app=express(); app.set('view engine','jade'); app.get('/',function(req,res) { res.render('index', {title:'Guru99',message:'Welcome'}) }); var server=app.listen(3000,function() {});
Code التفسير:
- أول ما يجب تحديده في التطبيق هو "محرك العرض" الذي سيُستخدم لعرض القوالب. وبما أننا سنستخدم Jade لعرض قوالبنا، فإننا نحدد ذلك وفقًا لذلك.
- يتم استخدام وظيفة التقديم لعرض صفحة ويب. في مثالنا، نقوم بعرض القالب (index.jade) الذي تم إنشاؤه مسبقًا.
- نقوم بتمرير قيم "Guruسيتم استبدال القيمتين "99" و"Welcome" بالمعاملين "title" و"message" على التوالي. وسيتم استبدال هاتين القيمتين بالمعاملين "title" و"message" المُعلنين في قالب index.jade.
إذا تم تنفيذ الأمر بنجاح، سيتم عرض الإخراج التالي عند تشغيل الكود الخاص بك في المتصفح.
الإخراج:
من الإخراج،
- يمكننا أن نرى أن عنوان الصفحة يتم تعيينه إلى "Guru99" ويتم تعيين عنوان الصفحة إلى "مرحباً".
- ويرجع ذلك إلى قالب Jade الذي يتم استدعاؤه في تطبيق Node.js الخاص بنا.









