من الصفر إلى الاحتراف. تعلم كيف تبني خوادم سريعة، وتدير قواعد البيانات، وتنشئ واجهات برمجة التطبيقات (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)، فهي ببساطة شاشة سوداء تسمح لك بكتابة الأوامر. لفتحها في ويندوز:
اضغط على زر Windows في الكيبورد (أو أيقونة ابدأ).
اضغط على زر R في الكيبورد معاً (Windows + R) لفتح نافذة "تشغيل" (Run).
اكتب cmd ثم اضغط Enter.
ستفتح لك شاشة سوداء (نافذة الأوامر). اكتب فيها الأوامر التي نذكرها في الدرس.
// للتحقق من إصدار Node.js node -v // للتحقق من إصدار npm npm -v
3. أول تطبيق: مرحباً بالعالم
الآن، سنقوم ببناء أول تطبيق حقيقي. أنشئ ملفاً باسم app.js وضع فيه هذا الكود:
// استدعاء وحدة HTTP المدمجة consthttp = require('http');
// إنشاء الخادم constserver = 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 (التصدير)
constadd = (a, b) => a + b; constsubtract = (a, b) => a - b;
npm (Node Package Manager) هو أكبر مستودع للبرمجيات في العالم. إنه المكان الذي يحتوي على ملايين الحزم (المكتبات) الجاهزة التي يمكنك تحميلها واستخدامها في مشاريعك مجاناً. سواء كنت تريد إطار عمل كامل مثل Express، أو مكتبة صغيرة لتنسيق التواريخ، npm هو مكانك.
أهم أوامر npm:
npm init -y ← إنشاء ملف package.json (هوية المشروع).
npm install express ← تحميل حزمة Express.
npm install --save-dev nodemon ← تحميل حزمة للتطوير فقط.
npm start ← تشغيل المشروع (كما هو معرف في package.json).
ملاحظة: بعد أي تثبيت، ستلاحظ ظهور مجلد جديد اسمه node_modules. هذا المجلد يحتوي على كل الحزم التي تم تحميلها. لا ترفعه إلى GitHub أبداً (استخدم .gitignore).
6. التعامل مع الملفات (File System)
واحدة من أقوى قدرات Node.js هي التعامل المباشر مع نظام الملفات (قراءة، كتابة، حذف). تستخدم لذلك الوحدة المدمجة fs. لاحظ أن دوالها تأتي بنسختين: متزامنة (Sync) وغير متزامنة (Async). الأفضل دائماً استخدام النسخة غير المتزامنة لتجنب تجميد الخادم.
constfs = require('fs');
// كتابة ملف (غير متزامن)
fs.writeFile('message.txt', 'مرحباً بالعالم!', (err) => { if (err) throwerr;
console.log('تم حفظ الملف بنجاح');
});
// قراءة ملف
fs.readFile('message.txt', 'utf8', (err, data) => { if (err) throwerr;
console.log(data);
});
7. إطار العمل Express: العمود الفقري
بينما يمكنك بناء خادم ويب باستخدام وحدة `http` المدمجة (كما فعلنا في القسم 3)، فإن هذا يعد بمثابة بناء الطرق يدوياً. إطار العمل Express هو الذي يوفر لك "شبكة طرق سريعة" جاهزة، مما يجعل بناء المسارات (Routes) وإدارة الطلبات أسهل بكثير.
// مسار الصفحة الرئيسية
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());
// محاكاة قاعدة بيانات (مصفوفة) letusers = [{ id: 1, name: 'عبدالحميد' }];
حتى الآن، كانت البيانات تعيش في الذاكرة (RAM)، مما يعني أنها تضيع بمجرد إغلاق الخادم. لبناء تطبيق حقيقي، تحتاج إلى قاعدة بيانات. Node.js يدعم أشهر قواعد البيانات، وأبرزها:
MongoDB (NoSQL)
تستخدم مع مكتبة Mongoose. مرنة جداً وتخزن البيانات بصيغة JSON.
PostgreSQL / MySQL (SQL)
قواعد بيانات علائقية صارمة. تستخدم مع مكتبات مثل Sequelize أو pg.
// مثال سريع لاستخدام MongoDB مع Mongoose constmongoose = require('mongoose');
// الاتصال بقاعدة البيانات
mongoose.connect('mongodb://localhost:27017/smartweb')
.then(() => console.log('تم الاتصال بقاعدة البيانات'))
.catch(err => console.error(err));
// تعريف نموذج (Schema) للمستخدم constUser = mongoose.model('User', { name: String, email: String });
11. الأمان: حماية التطبيق
بمجرد أن تنشر تطبيقك على الإنترنت، ستبدأ الهجمات. الأمان ليس رفاهية، بل ضرورة. إليك أهم الممارسات لحماية خادم Node.js:
استخدم HTTPS: لا ترسل كلمات المرور أبداً عبر HTTP العادي. استخدم شهادة SSL (مثل Let's Encrypt).
تجنب تسريب الأخطاء: لا تعرض تفاصيل الخطأ للمستخدم في الإنتاج. سجلها في الخادم فقط.
استخدم Helmet: مكتبة صغيرة تضيف ترويسات أمان (مثل منع XSS و Clickjacking).