دليل 2026 الشامل

دليل Node.js الشامل لبناء تطبيقات الويب

من الصفر إلى الاحتراف. تعلم كيف تبني خوادم سريعة، وتدير قواعد البيانات، وتنشئ واجهات برمجة التطبيقات (APIs) باستخدام JavaScript.

بقلم عبدالحميد البكدلي · آخر تحديث: 29 أكتوبر 2026

1. ما هو Node.js ولماذا هو ثورة في عالم الويب؟

Node.js ليس لغة برمجة جديدة، بل هو بيئة تشغيل (Runtime Environment) مبنية على محرك V8 (المحرك الذي يشغل Google Chrome). هذا يعني أنك تكتب بلغة JavaScript، ولكن يتم تنفيذها خارج المتصفح، على جهازك أو على الخادم.

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

لماذا يعتبر ثورة؟

  • سرعة فائقة: بفضل محرك V8، يتم تنفيذ الأكواد بشكل فوري تقريباً.
  • غير متزامن (Non-blocking): يمكنه إدارة آلاف الاتصالات في نفس الوقت دون أن يتجمد.
  • لغة واحدة للكل: تستخدم JavaScript في الواجهة الأمامية والخلفية، مما يوفر عليك تعلم لغتين.

2. التثبيت والإعداد خطوة بخطوة

قبل أن تبدأ، تحتاج إلى تجهيز بيئة العمل. اتبع هذه الخطوات:

الخطوة 1: التحميل

اذهب إلى الموقع الرسمي nodejs.org وحمّل نسخة LTS (النسخة المستقرة).

الخطوة 2: التثبيت

شغّل الملف واتبع التعليمات. سيتم تثبيت npm تلقائياً مع Node.js.

الخطوة 3: التحقق

افتح نافذة الأوامر (كما هو موضح بالأسفل) واكتب node -v للتأكد من نجاح التثبيت.

كيف تفتح "نافذة الأوامر" (Command Prompt)؟

إذا كنت لا تعرف ما هي الطرفية (Terminal)، فهي ببساطة شاشة سوداء تسمح لك بكتابة الأوامر. لفتحها في ويندوز:

  1. اضغط على زر Windows في الكيبورد (أو أيقونة ابدأ).
  2. اضغط على زر R في الكيبورد معاً (Windows + R) لفتح نافذة "تشغيل" (Run).
  3. اكتب cmd ثم اضغط Enter.
  4. ستفتح لك شاشة سوداء (نافذة الأوامر). اكتب فيها الأوامر التي نذكرها في الدرس.
// للتحقق من إصدار Node.js
node -v
// للتحقق من إصدار npm
npm -v

3. أول تطبيق: مرحباً بالعالم

الآن، سنقوم ببناء أول تطبيق حقيقي. أنشئ ملفاً باسم app.js وضع فيه هذا الكود:

// استدعاء وحدة HTTP المدمجة
const http = require('http');

// إنشاء الخادم
const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('مرحباً بالعالم من Node.js!');
});

// الاستماع على المنفذ 3000
server.listen(3000, () => {
  console.log('الخادم يعمل على http://localhost:3000');
});

لتشغيل هذا الخادم، افتح نافذة الأوامر (cmd) واكتب: node app.js، ثم اذهب إلى متصفحك واكتب http://localhost:3000.

4. الوحدات (Modules): لبنات البناء

في Node.js، لا نبني كل شيء من الصفر. لدينا "لبنات بناء" جاهزة تسمى الوحدات (Modules). كل وحدة هي ملف أو مكتبة تؤدي وظيفة محددة. هناك وحدات مدمجة (مثل `http` و `fs` و `path`)، ووحدات خارجية (مثل `express` و `mongoose`).

لفصل الكود وتنظيمه، نستخدم نظام الوحدات. يمكنك إنشاء ملف `math.js` يحتوي على دوال حسابية، ثم استدعاؤه في ملف آخر باستخدام `require`.

math.js (التصدير)

const add = (a, b) => a + b;
const subtract = (a, b) => a - b;

module.exports = { add, subtract };

app.js (الاستيراد)

const math = require('./math');

console.log(math.add(5, 3)); // 8
console.log(math.subtract(10, 4)); // 6

5. npm: مستودع الحزم البرمجية

npm (Node Package Manager) هو أكبر مستودع للبرمجيات في العالم. إنه المكان الذي يحتوي على ملايين الحزم (المكتبات) الجاهزة التي يمكنك تحميلها واستخدامها في مشاريعك مجاناً. سواء كنت تريد إطار عمل كامل مثل Express، أو مكتبة صغيرة لتنسيق التواريخ، npm هو مكانك.

أهم أوامر npm:

ملاحظة: بعد أي تثبيت، ستلاحظ ظهور مجلد جديد اسمه node_modules. هذا المجلد يحتوي على كل الحزم التي تم تحميلها. لا ترفعه إلى GitHub أبداً (استخدم .gitignore).

6. التعامل مع الملفات (File System)

واحدة من أقوى قدرات Node.js هي التعامل المباشر مع نظام الملفات (قراءة، كتابة، حذف). تستخدم لذلك الوحدة المدمجة fs. لاحظ أن دوالها تأتي بنسختين: متزامنة (Sync) وغير متزامنة (Async). الأفضل دائماً استخدام النسخة غير المتزامنة لتجنب تجميد الخادم.

const fs = require('fs');

// كتابة ملف (غير متزامن)
fs.writeFile('message.txt', 'مرحباً بالعالم!', (err) => {
  if (err) throw err;
  console.log('تم حفظ الملف بنجاح');
});

// قراءة ملف
fs.readFile('message.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

7. إطار العمل Express: العمود الفقري

بينما يمكنك بناء خادم ويب باستخدام وحدة `http` المدمجة (كما فعلنا في القسم 3)، فإن هذا يعد بمثابة بناء الطرق يدوياً. إطار العمل Express هو الذي يوفر لك "شبكة طرق سريعة" جاهزة، مما يجعل بناء المسارات (Routes) وإدارة الطلبات أسهل بكثير.

// تثبيت Express أولاً: npm install express

const express = require('express');
const app = express();

// مسار الصفحة الرئيسية
app.get('/', (req, res) => {
  res.send('مرحباً بك في Express!');
});

// مسار صفحة "من نحن"
app.get('/about', (req, res) => {
  res.send('هذه صفحة من نحن');
});

// تشغيل الخادم
app.listen(3000, () => {
  console.log('الخادم يعمل على المنفذ 3000');
});

8. المسارات (Routes) و الوسائط (Middleware)

في Express، كل طلب (Request) يمر عبر سلسلة من "المحطات" تسمى Middleware. هذه الوسائط يمكنها فحص الطلب، أو تعديله، أو إيقافه. بعد اجتياز الوسائط، يصل الطلب إلى المسار (Route) المخصص له.

مثال على Middleware (تسجيل الطلبات):

// وسيط يسجل كل طلب يدخل إلى الخادم
app.use((req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  next(); // تمرير الطلب للمرحلة التالية
});

مثال على المسارات المعقدة (Routing): يمكنك استخدام المعاملات (Params) في الرابط، مثلاً: /user/:id، حيث يمكنك استخراج رقم المستخدم من الرابط باستخدام req.params.id.

9. بناء واجهات برمجة التطبيقات (REST APIs)

REST API هي الطريقة التي تتحدث بها تطبيقات الهاتف (مثل تطبيقك على الأندرويد) مع الخادم الخاص بك. أنت لا ترسل صفحات HTML، بل ترسل بيانات بصيغة JSON. Express يجعل بناء هذه الواجهات أمراً بديهياً.

// استقبال البيانات بصيغة JSON
app.use(express.json());

// محاكاة قاعدة بيانات (مصفوفة)
let users = [{ id: 1, name: 'عبدالحميد' }];

// GET: جلب جميع المستخدمين
app.get('/api/users', (req, res) => {
  res.json(users);
});

// POST: إضافة مستخدم جديد
app.post('/api/users', (req, res) => {
  const newUser = { id: users.length + 1, name: req.body.name };
  users.push(newUser);
  res.status(201).json(newUser);
});

10. قواعد البيانات: التخزين الدائم

حتى الآن، كانت البيانات تعيش في الذاكرة (RAM)، مما يعني أنها تضيع بمجرد إغلاق الخادم. لبناء تطبيق حقيقي، تحتاج إلى قاعدة بيانات. Node.js يدعم أشهر قواعد البيانات، وأبرزها:

MongoDB (NoSQL)

تستخدم مع مكتبة Mongoose. مرنة جداً وتخزن البيانات بصيغة JSON.

PostgreSQL / MySQL (SQL)

قواعد بيانات علائقية صارمة. تستخدم مع مكتبات مثل Sequelize أو pg.

// مثال سريع لاستخدام MongoDB مع Mongoose
const mongoose = require('mongoose');

// الاتصال بقاعدة البيانات
mongoose.connect('mongodb://localhost:27017/smartweb')
  .then(() => console.log('تم الاتصال بقاعدة البيانات'))
  .catch(err => console.error(err));

// تعريف نموذج (Schema) للمستخدم
const User = mongoose.model('User', { name: String, email: String });

11. الأمان: حماية التطبيق

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

// تثبيت Helmet: npm install helmet
const helmet = require('helmet');
app.use(helmet());

// حماية من هجمات القوة الغاشمة (Rate Limiting)
const rateLimit = require('express-rate-limit');
app.use(rateLimit({ windowMs: 15 * 60 * 1000, max: 100 }));

12. النشر: إطلاق التطبيق للعالم

بعد أن تبني تطبيقك على جهازك (localhost)، حان الوقت لنقله إلى خادم حقيقي ليراه الجميع. هناك عدة منصات مجانية أو منخفضة التكلفة:

Railway

سهل جداً، يدعم Node.js.

Render

خطة مجانية جيدة للمشاريع الصغيرة.

Vercel / Netlify

ممتازة للواجهات الأمامية، وتدعم Node.js كـ Serverless.

نصيحة: لا تنسَ استخدام متغيرات البيئة (Environment Variables) لتخزين كلمات المرور ومفاتيح API بدلاً من كتابتها داخل الكود.

ع

عبدالحميد البكدلي

مؤسس SmartWeb · الموصل، العراق 🇮🇶

المزيد عن الكاتب ←