المكتبات الأساسية في Node.js
اكتشف أهم مكتبات npm التي يحتاجها كل مطور Node.js
ماذا نعني بالمكتبات؟
npm (Node Package Manager) هو أكبر نظام حزم في العالم يحتوي على أكثر من 2 مليون حزمة مجانية! هذه المكتبات توفر عليك الكثير من الوقت وتساعدك على بناء تطبيقات أفضل.
نصيحة ذهبية
استخدم pnpm بدلاً من npm للسرعة والكفاءة! تذكر: pnpm add بدلاً من npm install
1. Express - إطار عمل الويب
Express.js هو أشهر إطار عمل لبناء تطبيقات الويب في Node.js. سريع ومرن وبسيط!
# تثبيت Express pnpm add express # مع TypeScript pnpm add -D @types/express
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 وكلمات المرور بشكل آمن.
pnpm add dotenv
PORT=3000 DB_HOST=localhost DB_USER=admin DB_PASS=secret123 API_KEY=your_api_key_here
// في أول ملف
require('dotenv').config();
console.log(process.env.PORT); // 3000
console.log(process.env.API_KEY); // your_api_key_here
3. bcrypt - تشفير كلمات المرور
أبداً لا تحفظ كلمات المرور كنص عادي! استخدم bcrypt للتشفير الآمن.
pnpm add bcrypt
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 آمنة لتسجيل دخول المستخدمين.
pnpm add jsonwebtoken
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 بطريقة أنيقة ومنظمة.
pnpm add mongoose
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 - إعادة التشغيل التلقائية
pnpm add -D nodemon
# في package.json
{
"scripts": {
"dev": "nodemon src/index.js"
}
}
morgan - تسجيل الطلبات (Logging)
pnpm add morgan
// في app.js
const morgan = require('morgan');
app.use(morgan('dev'));
cors - التعامل مع Cross-Origin
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 يوفر الوقت في التطوير