مكتبة JavaScript القياسية (Node.js): نظرة شاملة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مكتبة JavaScript القياسية (Node.js): نظرة شاملة



Node.js هي بيئة تشغيل لـ JavaScript، مبنية على محرك V8 من Google. على عكس JavaScript في المتصفح، تقدم Node.js مكتبة قياسية مدمجة وقوية تسمح بالعمل مع نظام الملفات، الشبكة، تدفقات البيانات، التشفير، وغيرها الكثير. في هذه المقالة، سنستعرض بالتفصيل الوحدات الرئيسية للمكتبة القياسية لـ Node.js التي يحتاجها كل مطور.



1. وحدة fs (نظام الملفات)

توفر وحدة fs واجهة برمجة تطبيقات (API) للتفاعل مع نظام الملفات. وهي تدعم العمليات المتزامنة وغير المتزامنة.



  • قراءة ملف:
const fs = require('fs');

// قراءة غير متزامنةfs.readFile('example.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data);});

// قراءة متزامنةconst data = fs.readFileSync('example.txt', 'utf8');console.log(data);


  • الكتابة في ملف:
const fs = require('fs');

fs.writeFile('output.txt', 'مرحباً بالعالم!', (err) => { if (err) throw err; console.log('تم حفظ الملف');});


تدعم الوحدة أيضاً العمل مع الدلائل، التدفقات، وصلاحيات الوصول.



2. وحدة path (العمل مع المسارات)

تعمل وحدة path على تبسيط التعامل مع مسارات الملفات وتضمن التوافق عبر المنصات المختلفة.



const path = require('path');

const fullPath = '/users/docs/file.txt';console.log(path.dirname(fullPath)); // /users/docsconsole.log(path.basename(fullPath)); // file.txtconsole.log(path.extname(fullPath)); // .txt

// بناء مسارconst newPath = path.join('/users', 'docs', 'file.txt');console.log(newPath); // /users/docs/file.txt


3. وحدة http (خادم HTTP وعميل)

باستخدام http يمكنك إنشاء خوادم ويب وإرسال طلبات HTTP دون الحاجة لمكتبات خارجية.



  • خادم HTTP بسيط:
const http = require('http');

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

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


  • طلب HTTP (عميل):
const http = require('http');

http.get('http://api.example.com/data', (res) => { let data = ''; res.on('data', chunk => data += chunk); res.on('end', () => console.log(data));});


4. وحدة stream (تدفقات البيانات)

تسمح التدفقات بمعالجة كميات كبيرة من البيانات على أجزاء، دون تحميلها بالكامل في الذاكرة. تدعم Node.js أربعة أنواع من التدفقات: Readable، Writable، Duplex و Transform.



const fs = require('fs');const zlib = require('zlib');

// قراءة من ملف، ضغط وكتابةconst readStream = fs.createReadStream('input.txt');const writeStream = fs.createWriteStream('output.txt.gz');const gzip = zlib.createGzip();

readStream.pipe(gzip).pipe(writeStream);


5. وحدة crypto (التشفير)

توفر وحدة crypto وظائف للتجزئة (hashing)، التشفير، وتوليد الأرقام العشوائية.



const crypto = require('crypto');

// تجزئة كلمة المرورconst hash = crypto.createHash('sha256').update('myPassword123').digest('hex');console.log(hash);

// توليد بايتات عشوائيةcrypto.randomBytes(16, (err, buffer) => { console.log(buffer.toString('hex'));});


6. وحدة events (الأحداث)

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

توصيات