إنشاء مشروع بيئة خلفية باستخدام Node.js: دليل شامل

إنشاء مشروع بيئة خلفية باستخدام Node.js: دليل شامل

تعتبر Node.js بيئة تشغيل مشهورة تتيح تنفيذ شفرة جافاسكريبت خارج متصفح الويب.

تم إنشاؤه في - Jun 2023 Sat

إنشاء مشروع بيئة خلفية باستخدام Node.js: دليل شامل

تعتبر Node.js بيئة تشغيل مشهورة تتيح تنفيذ شفرة جافاسكريبت خارج متصفح الويب. تعتبر هذه التقنية مثالية لتطوير تطبيقات الخادم لأنها تسهل إنشاء أنظمة قابلة للتوسعة وذات أداء عالي.

في هذا المقال، سنستكشف عملية إنشاء مشروع بيئة خلفية باستخدام Node.js. سنغطي الأدوات اللازمة وتثبيتها على مختلف أنظمة التشغيل وأساسيات العمل مع Node.js.

أساسيات Node.js

تم بناء Node.js على محرك جافاسكريبت V8، الذي تم تطويره بواسطة جوجل لمتصفح كروم. تشمل بعض الميزات الرئيسية لـ Node.js:

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

الأدوات والتثبيت

قبل الغوص في المشروع، دعنا نتأكد من تثبيتك للأدوات المطلوبة على نظامك.

Node.js و npm

Node.js و npm (مدير حزم Node) هما الأداة الأساسية لإنشاء مشروع Node.js. يمكنك تنزيلهم وتثبيتهم على نظام التشغيل الخاص بك باستخدام الروابط التالية:

تأكد من تثبيت كل من Node.js و npm عن طريق تشغيل الأوامر التالية في الطرفية أو موجه الأوامر الخاص بك:

node -vnpm -v

محرر الشفرة

محرر شفرة جيد ضروري للتطوير الفعال. تشمل بعض الخيارات الشهيرة:

إنشاء مشروع Node.js

الآن بعد تثبيت الأدوات المطلوبة، دعونا ننشئ مشروع Node.js جديد.

الخطوة 1: تهيئة المشروع

أنشئ دليل جديد لمشروعك وانتقل إليه```bash

mkdir my-node-project

cd my-node-project

الخطوة 2: إنشاء ملف `package.json`قم بتهيئة ملف `package.json` بواسطة الأمر التالي:```bashnpm init -y

هذا الملف يحتوي على معلومات حول المشروع والوحدات المستخدمة.

الخطوة 3: إنشاء ملف app.js

أنشئ ملف جديد باسم app.js في دليل المشروع. يمكنك استخدام محرر الشفرة المفضل لديك للقيام بذلك. هذا الملف سيكون نقطة البداية لتطبيق Node.js الخاص بك.

touch app.js

الخطوة 4: كتابة كود بسيط

افتح ملف app.js في محرر الشفرة المفضل لديك وأضف الكود التالي:

const http = require('http');const hostname = '127.0.0.1';const port = 3000;const server = http.createServer((req, res) => {  res.statusCode = 200;  res.setHeader('Content-Type', 'text/plain');  res.end('Hello World\n');});server.listen(port, hostname, () => {  console.log(`Server running at http://${hostname}:${port}/`);});

هذا الكود يعمل على إنشاء خادم HTTP بسيط يستجيب برسالة "Hello World" لكل طلبات الويب.

الخطوة 5: تشغيل تطبيق Node.js

قم بتشغيل تطبيقك باستخدام الأمر التالي:

node app.js

يجب أن ترى الرسالة Server running at http://127.0.0.1:3000/ في الطرفية. الآن، يمكنك فتح متصفح الويب الخاص بك وزيارة http://127.0.0.1:3000/ لرؤية رسالة "Hello World" التي يتم عرضها.

الخطوات التالية

يوفر هذا الدليل نقطة انطلاق لإنشاء مشروع بيئة خلفية باستخدام Node.js. هناك مجموعة واسعة من الأدوات والمكتبات والتقنيات المتاحة لمساعدتك في تطوير تطبيقات معقدة وقوية، مثل:

  1. تنفيذ واجهة برمجة تطبيقات RESTful باستخدام Express:
  2. يمكنك استخدام Express، وهو إطار عمل خفيف وسريع لـNode.js، لإنشاء واجهة برمجة تطبيقات RESTful للسماح بالتفاعل بين الخادم والعميل.
  3. إضافة دعم قاعدة البيانات باستخدام MongoDB أو PostgreSQL:
  4. يمكنك الاستفادة من قواعد البيانات المختلفة لتخزين واسترجاع البيانات. بعض الخيارات الشهيرة تشمل MongoDB و PostgreSQL.
  5. استخدام المصادقة والتفويض مع Passport.js:
  6. يمكن لـ Passport.js مساعدتك في إضافة ميزات المصادقة والتفويض لتطبيقك، مما يسمح للمستخدمين بتسجيل الدخول وإدارة الصلاحيات.
  7. دمج الاتصال الفوري باستخدام Socket.IO:
  8. إذا كنت بحاجة إلى اتصال في الوقت الفعلي بين العميل والخادم، فيمكنك استخدام Socket.IO لتنفيذ هذه الميزة بسهولة.

تنفيذ واجهة برمجة تطبيقات RESTful باستخدام Express

الآن سنقوم بإنشاء واجهة برمجة تطبيقات RESTful بسيطة لإدارة مجموعة من العناصر. ستدعم واجهة برمجة التطبيقات العمليات التالية:

  • الحصول على جميع العناصر
  • الحصول على عنصر فردي بواسطة المعرّف
  • إضافة عنصر جديد
  • تحديث عنصر موجود
  • حذف عنصر

الخطوة 1: تعريف نموذج البيانات

بالنسبة لهذا المثال، سنستخدم مصفوفة في الذاكرة لتخزين عناصرنا. في الوضع المثالي، يمكنك استخدام قاعدة بيانات لتخزين البيانات. ومع ذلك، ستكون المصفوفة كافية لأغراض التوضيح.

قم بتحديث ملف app.js ليشمل نموذج البيانات التالي:

const items = [  { id: 1, name: 'Item 1' },  { id: 2, name: 'Item 2' },  { id: 3, name: 'Item 3' },];let nextId = 4;

الخطوة 2: تنفيذ نقاط نهاية API

أضف نقاط النهاية التالية إلى ملف app.js:

// الحصول على جميع العناصرapp.get('/items', (req, res) => {  res.json(items);});// الحصول على عنصر فردي بواسطة المعرّفapp.get('/items/:id', (req, res) => {  const itemId = parseInt(req.params.id, 10);  const item = items.find(item => item.id === itemId);  if (item) {    res.json(item);  } else {    res.status(404).send('Item not found');  }});// إضافة عنصر جديدapp.post('/items', express.json(), (req, res) => {  const newItem = {    id: nextId++,    name: req.body.name,  };  items.push(newItem);  res.status(201).json(newItem);});// تحديث عنصر موجودapp.put('/items/:id', express.json(), (req, res) => {  const itemId = parseInt(req.params.id, 10);  const itemIndex = items.findIndex(item => item.id === itemId);  if (itemIndex !== -1) {    const updatedItem = {      ...items[itemIndex],      name: req.body.name,    };    items[itemIndex] = updatedItem;    res.json(updatedItem);  } else {    res.status(404).send('Item not found');  }});// حذف عنصرapp.delete('/items/:id', (req, res) => {  const itemId = parseInt(req.params.id, 10);  const itemIndex = items.findIndex(item => item.id === itemId);  if (itemIndex !== -1) {    items.splice(itemIndex, 1);    res.status(204).send();  } else {    res.status(404).send('Item not found');  }});

تأكد من إعادة تشغيل الخادم الخاص بك بعد إجراء هذه التغييرات.

الخطوة 3: اختبار واجهة برمجة التطبيقات

يمكنك استخدام أدوات مثل Postman أو curl لاختبار واجهة برمجة التطبيقات. بدلاً من ذلك، يمكنك استخدام مكتبة axios في تطبيق Node.js لإجراء طلبات HTTP. قم بإعداد ملف اختبار جديد test.js وقم بتثبيت axios بواسطة:

npm install axios

أضف الكود التالي إلى ملف test.js:

const axios = require('axios');(async () => {  try {    // الحصول على جميع العناصر    let response = await axios.get('http://localhost:3000/items');    console.log('العناصر:', response.data);    // إضافة عنصر جديد    response = await axios.post('http://localhost:3000/items', {      name: 'عنصر جديد',    });    const newItem = response.data;    console.log('تمت إضافة العنصر:', newItem);    // تحديث عنصر موجود    response = await axios.put(`http://localhost:3000/items/${newItem.id}`, {      name: 'عنصر مُحدّث',    });    console.log('تم تحديث العنصر:', response.data);    // حذف عنصر    await axios.delete(`http://localhost:3000/items/${newItem.id}`);    console.log('تم حذف العنصر');    // الحصول على جميع العناصر بعد الحذف    response = await axios.get('http://localhost:3000/items');    console.log('العناصر بعد الحذف:', response.data);  } catch (error) {    console.error('حدث خطأ:', error.message);  }})();

تأكد من إعادة تشغيل الخادم الخاص بك بعد إجراء هذه التغييرات.

الخطوة 3: اختبار واجهة برمجة التطبيقات

يمكنك استخدام أدوات مثل Postman أو curl لاختبار واجهة برمجة التطبيقات. بدلاً من ذلك، يمكنك استخدام وظيفة fetch المدمجة في JavaScript في وحدة تطوير المتصفح.

إضافة دعم قاعدة البيانات

بدلاً من استخدام مخزن بيانات في الذاكرة، ستستخدم تطبيقات العالم الحقيقي عادةً قاعدة بيانات. ضع في اعتبارك استخدام MongoDB أو PostgreSQL لاحتياجات تخزين البيانات الخاصة بك.

تنفيذ المصادقة والتفويض باستخدام Passport.js

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

دمج الاتصال بالوقت الحقيقي باستخدام Socket.IO

بالنسبة للتطبيقات التي تتطلب اتصالًا بالوقت الحقيقي بين العملاء والخادم، يمكنك استخدام Socket.IO. تتيح هذه المكتبة اتصالًا بالوقت الحقيقي وثنائي الاتجاه وقائم على الأحداث، مما يجعلها مثالية للتطبيقات مثل غرف الدردشة أو الألعاب عبر الإنترنت.

من خلال استكشاف هذه الأدوات والتقنيات الإضافية، يمكنك توسيع مشروع الخلفية Node.js الخاص بك إلى تطبيق متطور ومتكامل بالكامل.

تنشيط تطبيق Node.js الخاص بك

بمجرد تطوير مشروع الخلفية Node.js الخاص بك، تكون الخطوة التالية هي نشره على بيئة الإنتاج. هناك العديد من منصات الاستضافة المتاحة، مثل Heroku و Digital Ocean و AWS.

في هذا القسم، سنغطي عملية نشر التطبيق على Heroku.

الخطوة 1: التسجيل في Heroku

إذا لم يكن لديك حساب على Heroku، قم بالتسجيل في موقع Heroku.

الخطوة 2: تثبيت واجهة سطر الأوامر Heroku CLI

لنشر التطبيق، ستحتاج إلى Heroku CLI. قم بتنزيله وتثبيته لنظام التشغيل الخاص بك:

تأكد من التثبيت عن طريق تشغيل الأمر التالي في الطرفية:

heroku --version

الخطوة 3: تسجيل الدخول إلى Heroku CLI

قم بتسجيل الدخول إلى حسابك على Heroku باستخدام الواجهة البرمجية لسطر الأوامر:

heroku login

ستُفتح نافذة المتصفح ويُطلب منك تسجيل الدخول باستخدام بيانات الاعتماد الخاصة بك على Heroku.

الخطوة 4: إعداد التطبيق للنشر

قبل نشر التطبيق، تحتاج إلى التأكد من أنه جاهز لبيئة الإنتاج. أضف ملف Procfile في دليل المشروع الجذري بالمحتوى التالي:

web: node app.js

يخبر هذا الملف Heroku بكيفية بدء تشغيل التطبيق.

ثم قم بإضافة السطر التالي إلى ملف app.js لتكوين المنفذ بشكل ديناميكي:

const port = process.env.PORT || 3000;

تتيح هذه التغييرات لـ Heroku تعيين المنفذ تلقائيًا.

الخطوة 5: تهيئة مستودع Git

تأكد من أن مشروعك يخضع للتحكم بالإصدار باستخدام Git. إذا لم تقم بذلك بالفعل، قم بتهيئة مستودع Git في دليل المشروع:

git init

أضف جميع الملفات إلى المستودع وقم بإلتزام التغييرات:

git add .git commit -m "Initial commit"

الخطوة 6: إنشاء ونشر تطبيق Heroku الخاص بك

قم بإنشاء تطبيق Heroku جديد باستخدام الواجهة البرمجية لسطر الأوامر:

heroku create

قم بنشر التطبيق عن طريق دفع التعليمات البرمجية لمستودع Heroku البعيد:

git push heroku main

انتظر اكتمامًا لاكتمال النشر. بعد ذلك، افتح التطبيق المنشور حديثًا في متصفح الويب باستخدام الأمر التالي:

heroku open

تم نشر مشروع الخلفية Node.js الخاص بك بنجاح على Heroku!

مراقبة وتحجيم التطبيق

لضمان موثوقية وأداء التطبيق، يجب عليك النظر في استخدام أدوات المراقبة والتحجيم.

يوفر Heroku العديد من الإضافات والميزات لمراقبة وتسجيل وتحجيم التطبيق:

إذا كنت تستخدم منصات استضافة أخرى، فمن المحتمل أن توفر أدوات وميزات مماثلة لمساعدتك في مراقبة وتحجيم التطبيق.

من خلال اتباع هذا الدليل، قد قمت ببناء مشروع الخلفية Node.js وإضافة الميزات المتقدمة ونشره على بيئة الإنتاج. بينما تواصل تطوير التطبيق الخاص بك، فكر في استكشاف المزيد من الأدوات والتقنيات لتعزيز قدراته وأدائه.




تعليقات

Mohamed
Mohamed Sayed

I want to express my to the Molvp team for their outstanding content and continuous support. It's clear that the company and its staff are dedicated to making valuable contributions to the tech community. This comprehensive guide is a testament to their professionalism and commitment. I gained so much from their step-by-step instructions, and I truly appreciate the effort they put into helping developers at all levels. Looking forward to more insightful articles and guidance from your talented team. Thank you for your ongoing support! ❤️❤️

إضافة تعليق