المكتبات المهمة

الدرس 5 من 18

0% مكتمل

الفصل الثاني: الأساسيات

المكتبات الأساسية في Node.js

اكتشف أهم مكتبات npm التي يحتاجها كل مطور Node.js

ماذا نعني بالمكتبات؟

npm (Node Package Manager) هو أكبر نظام حزم في العالم يحتوي على أكثر من 2 مليون حزمة مجانية! هذه المكتبات توفر عليك الكثير من الوقت وتساعدك على بناء تطبيقات أفضل.

نصيحة ذهبية

استخدم pnpm بدلاً من npm للسرعة والكفاءة! تذكر: pnpm add بدلاً من npm install

1. Express - إطار عمل الويب

Express.js هو أشهر إطار عمل لبناء تطبيقات الويب في Node.js. سريع ومرن وبسيط!

Terminal
# تثبيت Express
pnpm add express

# مع TypeScript
pnpm add -D @types/express
app.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.json({ message: 'مرحباً بك!' });
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

سريع

خفيف ومحسّن للأداء

مرن

آلاف المكتبات الإضافية

شائع

مجتمع ضخم ودعم ممتاز

2. dotenv - إدارة متغيرات البيئة

لحفظ البيانات الحساسة مثل مفاتيح API وكلمات المرور بشكل آمن.

Terminal
pnpm add dotenv
.env
PORT=3000
DB_HOST=localhost
DB_USER=admin
DB_PASS=secret123
API_KEY=your_api_key_here
app.js
// في أول ملف
require('dotenv').config();

console.log(process.env.PORT); // 3000
console.log(process.env.API_KEY); // your_api_key_here

3. bcrypt - تشفير كلمات المرور

أبداً لا تحفظ كلمات المرور كنص عادي! استخدم bcrypt للتشفير الآمن.

Terminal
pnpm add bcrypt
auth.js
const bcrypt = require('bcrypt');

// تشفير كلمة المرور
async function hashPassword(password) {
  const salt = await bcrypt.genSalt(10);
  const hashed = await bcrypt.hash(password, salt);
  return hashed;
}

// التحقق من كلمة المرور
async function verifyPassword(password, hashedPassword) {
  const isValid = await bcrypt.compare(password, hashedPassword);
  return isValid;
}

// مثال
const password = 'mySecretPass123';
const hashed = await hashPassword(password);
console.log(hashed); // $2b$10$...

const isCorrect = await verifyPassword('mySecretPass123', hashed);
console.log(isCorrect); // true

4. jsonwebtoken (JWT) - المصادقة

JWT لإنشاء tokens آمنة لتسجيل دخول المستخدمين.

Terminal
pnpm add jsonwebtoken
jwt.js
const jwt = require('jsonwebtoken');

// إنشاء token
function generateToken(user) {
  const payload = {
    userId: user.id,
    email: user.email
  };
  
  return jwt.sign(payload, process.env.JWT_SECRET, {
    expiresIn: '7d' // تنتهي بعد 7 أيام
  });
}

// التحقق من token
function verifyToken(token) {
  try {
    const decoded = jwt.verify(token, process.env.JWT_SECRET);
    return decoded;
  } catch (error) {
    return null;
  }
}

// Middleware للحماية
function authenticate(req, res, next) {
  const token = req.headers.authorization?.split(' ')[1];
  
  if (!token) {
    return res.status(401).json({ message: 'غير مصرح' });
  }
  
  const user = verifyToken(token);
  if (!user) {
    return res.status(401).json({ message: 'Token غير صالح' });
  }
  
  req.user = user;
  next();
}

5. Mongoose - MongoDB ORM

مكتبة رائعة للتعامل مع MongoDB بطريقة أنيقة ومنظمة.

Terminal
pnpm add mongoose
models/User.js
const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  username: {
    type: String,
    required: true,
    unique: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  createdAt: {
    type: Date,
    default: Date.now
  }
});

module.exports = mongoose.model('User', userSchema);

6. أدوات التطوير المهمة

nodemon - إعادة التشغيل التلقائية

Terminal
pnpm add -D nodemon

# في package.json
{
  "scripts": {
    "dev": "nodemon src/index.js"
  }
}

morgan - تسجيل الطلبات (Logging)

Terminal
pnpm add morgan

// في app.js
const morgan = require('morgan');
app.use(morgan('dev'));

cors - التعامل مع Cross-Origin

Terminal
pnpm add cors

// في app.js
const cors = require('cors');
app.use(cors());

قائمة المكتبات الأساسية

المكتبة الاستخدام الأمر
express إطار عمل الويب pnpm add express
dotenv متغيرات البيئة pnpm add dotenv
bcrypt تشفير كلمات المرور pnpm add bcrypt
jsonwebtoken JWT للمصادقة pnpm add jsonwebtoken
mongoose MongoDB ODM pnpm add mongoose
nodemon إعادة تشغيل تلقائية pnpm add -D nodemon
cors حل مشاكل CORS pnpm add cors
morgan تسجيل الطلبات pnpm add morgan

الخلاصة

  • استخدم pnpm بدلاً من npm للسرعة
  • Express هو الأساس لتطبيقات الويب
  • احفظ المفاتيح في .env مع dotenv
  • شفر كلمات المرور دائماً مع bcrypt
  • استخدم JWT للمصادقة الآمنة
  • nodemon يوفر الوقت في التطوير