مسرد Node.js من الألف إلى الياء

مسرد Node.js — 115 تعريفًا

.on() / .emit()
on(حدث، callback): تسجيل مستمع. emit(حدث، بيانات): إطلاق الحدث (تُستدعى كل مستمعاته مع البيانات).
.once() / .off()
once(): الاستماع لحدث مرة واحدة فقط (إلغاء اشتراك تلقائي). off()/removeListener(): التوقف عن الاستماع لحدث.
.pipe()
يربط تدفق قراءة (readable stream) بتدفق كتابة (writable stream): تتدفق البيانات تلقائيًا من أحدهما إلى الآخر، قطعة قطعة، مع إدارة التدفق.
«يعمل على جهازي»
المشكلة التي يحلها دوكر (Docker): التطبيق يعتمد على بيئته وقد يفشل elsewhere؛ الحاوية تحمل بيئتها معها، فتعمل في كل مكان بالطريقة نفسها.
الاعتماد التدريجي (Adoption progressive)
يُتعلم TS خطوة بخطوة (تنميط خفيف ثم متقدم)؛ وباعتباره مجموعة عليا من JS، تُعاد استخدام إتقان جافاسكربت — نضيف الأنواع فوقها.
واجهة + واجهة أمامية منفصلة (API + front séparé / SPA)
بديل حديث: Node يعرض واجهة REST API (بصيغة JSON) يستهلكها front منفصل (React/Vue/Angular) يدير العرض في المتصفح.
واجهة REST API
أسلوب معماري لواجهات الويب: عرض الموارد (روابط واضحة) تُدار بأساليب HTTP حسب دلالتها، وردود بصيغة JSON مع رموز الحالة المناسبة.
async/await
صياغة حديثة (سكر فوق الوعود Promises): تنتظر ‎await‎ نتيجة عملية لامتزامنة دون حجب؛ يُقرأ الكود اللامتزامن كأنه متزامن. الأخطاء عبر try/catch.
اللامتزامن غير الحاجب (Asynchrone non-bloquant)
نموذج لا تحجب فيه العمليات البطيئة (ملفات، شبكة، قاعدة) البرنامج: تسجل Node دالة راجعة (callback) وتنتقل لشيء آخر أثناء الانتظار.
لامتزامن مقابل متزامن (Asynchrone vs synchrone / fs)
يُفضَّل اللامتزامن (غير الحاجب) في الخادم حتى لا يحجب حلقة الأحداث (event loop)؛ والمتزامن (Sync) مخصص للسكربتات والإعداد عند الإقلاع.
المصادقة مقابل التفويض (Authentification vs autorisation)
المصادقة: من هو المستخدم (401 إن لم يُصادَق عليه). التفويض: هل له الحق في هذا الفعل (403 إن لم يُؤذَن له).
قاعدة البيانات / الاستمرارية (Base de données / persistance)
نظام يحفظ البيانات دائمًا (مستخدمون، منتجات…). عائلتان: NoSQL (مونغو MongoDB) و SQL/علائقية (القسم 3-4).
فوائد دوكر (Bénéfices de Docker)
قابلية إعادة الإنتاج (متطابق في كل مكان)، العزل (لا تعارضات)، قابلية النقل (أي مضيف Docker)، سهولة النشر، وانضمام سريع (docker compose up).
فوائد تايب سكربت (Bénéfices de TypeScript)
أخطاء تُمسك عند الترجمة، إكمال تلقائي وأدوات متفوقة، توثيق ضمني (الأنواع تصف)، ومتانة وقابلية صيانة في المشاريع الكبيرة.
فوائد الاختبارات (Bénéfices des tests)
الثقة (الكود يفعل ما يجب)، منع التراجع (كشف ما يكسره تعديل)، التوثيق (السلوك المتوقع)، وتصميم أفضل (الكود القابل للاختبار = منظم أفضل).
أفضل ممارسات REST (Bonnes pratiques REST)
روابط متسقة بصيغة الجمع، أساليب/رموز حالة صحيحة، إدارة أخطاء نظيفة، ترقيم الصفحات (pagination)، إصدار الواجهة (/api/v1/)، ورد JSON منظم.
حلقة الأحداث (Boucle d'événements / event loop)
الآلية المركزية التي تنظم التنفيذ: تطلق العمليات البطيئة في الخلفية وتستدعي الدوال عندما تصل النتائج.
المخزن المؤقت (Buffer)
منطقة ذاكرة خام من البايتات لمعالجة البيانات الثنائية (ملفات، شبكة)، التي لا تملكها جافاسكربت أصليًا؛ والتدفقات (streams) تنقل غالبًا Buffers.
الدالة الراجعة (Callback)
دالة تُمرَّر كوسيط، تُستدعى عندما تنتهي عملية لامتزامنة. اصطلاح Node «الخطأ أولًا (error-first)»: الوسيط الأول = الخطأ (null إن سار كل شيء)، ثم النتيجة.
جحيم الدوال الراجعة (Callback hell)
تداخل غير مقروء للدوال الراجعة عند تسلسل عمليات لامتزامنة مترابطة؛ مشكلة تحلها الوعود (Promises) و async/await.
ما يبسطه إكسبريس (Ce qu'Express simplifie)
الخادم الأصلي يدير كل شيء يدويًا (توجيه بشروط if، تحليل الجسم، الترويسات)؛ يوفر Express التوجيه والتحليل والوسائط (middlewares) — لكنه مبني على الوحدة http.
مسار الوحدة (Chemin de module)
محلي: يبدأ بـ ./ أو ../ (ملفات المشروع). اسم وحده: وحدة أصلية (fs) أو حزمة npm في node_modules (مثل express).
التكامل/النشر المستمر (CI/CD / GitHub Actions)
أتمتة المسار من الكود إلى الإنتاج: CI (عند كل دفع، اختبار/تحقق)، CD (نشر تلقائي إذا نجحت التحققات). GitHub Actions ينشئ هذه السلاسل.
التعنقد (Clustering)
إطلاق عدة نسخ من التطبيق (واحدة لكل نواة، عبر الوحدة cluster أو PM2) تتقاسم الطلبات؛ يستغل كل النوى (كون Node أحادي الخيط).
كومون جي إس (CommonJS / CJS)
نظام الوحدات التاريخي في Node: التصدير بـ ‎module.exports‎، والاستيراد بـ ‎require()‎. متزامن وبسيط ومنتشر في منظومة npm.
الترجمة (Compilation / tsc) / ملف tsconfig
لا يُنفَّذ TS مباشرة: المترجم (tsc) يتحقق ويحول ملفات .ts إلى .js. يُضبَط عبر tsconfig.json؛ و ts-node ينفذ TS مباشرة في التطوير.
console.log()
دالة العرض في الطرفية (مكافئ «print»)؛ أداة أساسية لرؤية القيم وتصحيح الأخطاء وتتبع التنفيذ.
const / let (مقابل var)
const: ثابت لا يُعاد إسناده (يُفضَّل). let: متغير يُعاد إسناده. كلاهما بنطاق الكتلة. يجب تجنب ‎var‎ (نطاق مربك).
CRUD
العمليات الأساسية الأربع: الإنشاء (Create) والقراءة (Read) والتعديل (Update) والحذف (Delete)؛ وفي Mongoose، أساليب لامتزامنة (await).
dependencies مقابل devDependencies / مجلد node_modules
dependencies: ضرورية في الإنتاج. devDependencies: مفيدة في التطوير فقط (-D). node_modules: مجلد الحزم المثبتة (غير مُنسَّخ، قابل لإعادة التوليد).
النشر (Déploiement)
تشغيل التطبيق على خادم متاح على الإنترنت (بدل localhost)؛ عبر منصة PaaS (بسيطة) أو خادم VPS/سحابي (تحكم أكبر ومسؤوليات أكثر).
التفكيك (Destructuration)
استخراج قيم الكائنات/المصفوفات في سطر واحد: ‎const { nom } = obj;‎ أو ‎const [a, b] = arr;‎. منتشر جدًا (استيرادات، بيانات).
دوكر / الحوسبة بالحاويات (Docker / conteneurisation)
أداة تغلف التطبيق مع كل بيئته (Node والاعتماديات والإعداد) في حاوية معزولة وقابلة للنقل، تعمل في كل مكان بالطريقة نفسها.
دوكر كومبوز (Docker Compose)
ملف docker-compose.yml يعرّف عدة حاويات (تطبيق Node + قاعدة + ذاكرة…) وعلاقاتها، تُطلَق معًا (docker compose up)؛ يصف كل المنظومة.
emit / on / broadcast
emit(حدث، بيانات): إرسال. on(حدث، callback): استقبال. الخادم يرسل لعميل، أو للجميع (io.emit / broadcast)، أو لمجموعات (rooms).
أخطاء متوقعة مقابل غير متوقعة (Erreurs attendues vs inattendues)
متوقعة: مورد غير موجود (404)، تحقق فاشل (400) — تُدار صراحة. غير متوقعة: علل (500). ويجب أيضًا إدارة أخطاء اللامتزامن (try/catch حول await).
الخطأ أولًا / try-catch (error-first / try-catch)
إدارة الأخطاء: الخطأ في الوسيط الأول للدوال الراجعة؛ .catch() للوعود؛ try/catch حول await.
وحدات ES (ES Modules / ESM)
نظام الوحدات المعياري للغة: التصدير بـ ‎export‎، والاستيراد بـ ‎import‎. اتجاه المستقبل؛ يُفعَّل عبر .mjs أو "type":"module" في package.json.
أساسيات الإنتاج (Essentiels de production)
متغيرات البيئة (الإعداد + الأسرار، أبدًا في الكود/Git)، و HTTPS (التشفير)، والسجلات والمراقبة (logs/monitoring)، وبيئات منفصلة (تطوير/تمهيد/إنتاج).
حدث الخطأ (Événement error)
حدث خاص: باعث يطلق 'error' دون مستمع يُسقط البرنامج — استمع للأخطاء دائمًا.
باعث الأحداث (EventEmitter)
صنف أصلي (الوحدة events) في قلب النموذج الحدثي لـ Node؛ كثير من الكائنات الأصلية (خادم HTTP، التدفقات…) ترث منه.
تنفيذ ملف (Exécuter un fichier)
الطريقة الرئيسية للعمل: كتابة الكود في ملف .js وتشغيله بـ ‎node fichier.js‎ (تنفذ Node كل الملف).
إكسبريس (Express)
إطار الويب المرجعي لـ Node (بسيط ومرن)، مبني على الوحدة http؛ يبسط التوجيه والتحليل وإدارة الطلبات. أساس معظم تطبيقات Node.
express.Router()
أداة تجمع المسارات حسب المورد في ملفات منفصلة (موجه users و products…) تُثبَّت على التطبيق؛ تنظم واجهة تكبر.
الملفات الثابتة (Fichiers statiques)
موارد ثابتة تُسلَّم للمتصفح (CSS، صور، JS العميل، خطوط)؛ تُخدَم ببساطة مع الوسيط express.static('public').
الدالة السهمية (Fonction fléchée / arrow)
صياغة مختصرة ‎(a) => ...‎ لكتابة الدوال، مستعملة جدًا للدوال الراجعة؛ دون ‎this‎ خاص (تتجنب فخاخًا).
نظام الملفات (fs / file system)
وحدة قراءة/كتابة الملفات والمجلدات؛ الدوال بنسخة لامتزامنة (تُفضَّل، fs.promises + await) أو متزامنة (Sync، حاجبة).
إدارة الأخطاء المركزية (Gestion d'erreurs centralisée)
وسيط Express خاص (err, req, res, next) يوضع أخيرًا، يستقبل الأخطاء ويعيد ردًا متسقًا (رمز صحيح، رسالة واضحة، دون تسريب تفاصيل حساسة).
عموميات Node مقابل المتصفح (Globaux Node vs navigateur)
لا يملك Node window/document/DOM (لا صفحة ويب)؛ ويوفر process و __dirname و __filename و global والوصول إلى النظام.
تجزئة كلمات المرور (Hachage des mots de passe / bcrypt)
لا نخزن أبدًا كلمة مرور بنص صريح، بل تجزئتها أحادية الاتجاه (bcrypt، مع ملح، بطيئة عمدًا). عند الاتصال، نقارن دون فك تشفير.
الوحدة http الأصلية (http / module natif)
وحدة تتيح إنشاء خادم ويب دون اعتمادية: http.createServer() مع دالة تُستدعى عند كل طلب، ثم .listen(port).
مكثف الإدخال/الإخراج مقابل مكثف المعالج (I/O-intensif vs CPU-intensif)
يتفوق Node في مهام الإدخال/الإخراج (خوادم، واجهات، وقت حقيقي)؛ وهو أقل ملاءمة للحسابات الثقيلة المطولة (أحادي الخيط).
الصورة / Dockerfile / الحاوية (Image / Dockerfile / conteneur)
الصورة: قالب جامد للتطبيق + البيئة، يعرّفه Dockerfile (وصفة البناء). الحاوية: نسخة قيد التشغيل من صورة.
حقن SQL (Injection SQL)
ثغرة حرجة: لا تدمج أبدًا بيانات المستخدم في استعلام SQL؛ استخدم استعلامات مُعامَلة (الـ ORM تحمي تلقائيًا).
رمز JWT (JSON Web Token)
رمز موقّع تشفيريًا يُصدَر بعد الاتصال، يعيده العميل مع كل طلب (ترويسة Authorization) ويتحقق منه الخادم؛ دون حالة، شائع للواجهات.
دعم طويل الأمد مقابل الحالية (LTS vs Current)
LTS (دعم طويل الأمد، إصدارات زوجية): مستقرة وتُصان طويلًا، تُفضَّل. Current (فردية): أحدث لكن أقل استقرارًا، لاختبار الجديد.
map / filter / reduce
أساليب المصفوفات الحديثة لتحويل المجموعات وترشيحها وتجميعها بأسلوب دالي؛ الطريقة الحديثة لمعالجة البيانات.
أساليب ورموز HTTP (Méthodes & codes HTTP)
الأساليب: GET (قراءة) و POST (إنشاء) و PUT/PATCH (تعديل) و DELETE (حذف). الرموز: 200 OK و 201 Created و 400/401/404 (أخطاء العميل) و 500 (خطأ الخادم).
الوسيط (Middleware)
دالة (req, res, next) تُنفَّذ أثناء معالجة طلب؛ يمكنها الفحص/التعديل وتنفيذ كود، ثم next() للانتقال للتالي. المفهوم الأساسي في Express.
التخزين المؤقت (Mise en cache / Redis)
تخزين النتائج المكلفة (استعلامات متكررة، حسابات) في الذاكرة (أو Redis) لتفادي إعادتها؛ غالبًا أقوى رافعة للأداء.
الوحدة (Module)
ملف منفصل بمسؤولية، يصدّر ما يتيحه ويستورد ما يحتاجه؛ أساس تنظيم الكود.
الوحدات الأصلية (Modules natifs / built-in)
مكتبات مدمجة في Node (دون تثبيت)، تتيح الوصول إلى النظام: fs و path و os و http و crypto و events و stream… تُستورَد باسمها.
مونغو (MongoDB / NoSQL orienté documents)
قاعدة تخزن مستندات (DOCUMENTS) (بنى شبيهة بـ JSON/BSON) مجمعة في مجموعات (COLLECTIONS)، دون مخطط صارم؛ قريبة من كائنات JS، شائعة مع Node.
مونغوز (Mongoose / ODM)
مخطط كائنات المستندات (ODM) يضيف طبقة عملية فوق MongoDB: مخططات (بنية + تحقق) ونماذج (أساليب المعالجة).
محرك القوالب (Moteur de templates / vues)
أداة تولد HTML ديناميكيًا من قوالب (HTML + منطق: متغيرات وحلقات وشروط) وبيانات؛ EJS و Handlebars و Pug…
محرك V8 (Moteur V8)
محرك جافاسكربت في متصفح كروم من غوغل (مكتوب بـ C++) يترجم JS وينفذه بسرعة فائقة؛ قلب Node.js.
نموذج MVC / فصل المسؤوليات (MVC / séparation des responsabilités)
نماذج (البيانات) ومتحكمات (منطق المعالجة) ومسارات (روابط تفوض للمتحكمات)؛ يفصل الاهتمامات لكود قابل للصيانة والتطور.
Node + npm
تثبيت Node يجلب المنفذ Node (الذي يشغل سكربتاتك) و npm (مدير الحزم) معًا.
Node.js
بيئة تشغيل تتيح تشغيل جافاسكربت خارج المتصفح (من جهة الخادم)، مبنية على محرك V8 إضافة إلى مكتبة وصول إلى النظام.
npm والسجل (npm & le registre)
مدير حزم Node، يتيح الوصول إلى أكبر سجل مفتوح المصدر في العالم (مئات آلاف المكتبات القابلة لإعادة الاستخدام).
مدير إصدارات Node (nvm / Node Version Manager)
أداة تتيح تثبيت عدة إصدارات من Node والتبديل بينها؛ ثمينة عندما تتطلب المشاريع إصدارات مختلفة.
مخطط الكائنات العلائقية (ORM / Prisma, Sequelize)
مخطط يطابق الجداول مع كائنات JS ويولد SQL؛ معالجة كائنات/أساليب بدل SQL خام (مقروء وآمن ومنتج).
الوحدة os
وحدة الوصول إلى معلومات النظام: المنصة والمعالجات (os.cpus) والذاكرة والمجلدات القياسية (homedir و tmpdir).
منصة كخدمة (PaaS / Render, Railway…)
منصات تبسط النشر: نربط مستودع Git، فتبني وتطلق وتدير الخادم/HTTPS/التوسع؛ مستوى مجاني شائع. مثالية للبدء.
ملف package-lock.json
ملف يقفل الإصدارات الدقيقة المثبتة؛ يضمن أن يثبت الجميع الإصدارات نفسها (قابلية إعادة الإنتاج).
ملف package.json
بيان المشروع: الاسم والإصدار والاعتماديات والسكربتات والبيانات الوصفية. يُنشَأ بـ ‎npm init‎؛ مرجع كل مشروع Node.
الوحدة path
وحدة معالجة المسارات المحمولة (path.join و resolve و basename و extname…)؛ تدير اختلافات الفواصل بين الأنظمة (/ مقابل \).‎
سلسلة الوسائط (Pipeline de middlewares)
سلسلة دوال يعبرها كل طلب؛ التوجيه والتحليل (express.json) والمصادقة وإدارة الأخطاء كلها وسائط (app.use أو لكل مسار).
بريزما (Prisma / moderne)
ORM محبوب: مخطط تصريحي (schema.prisma) وترحيلات (تنسيخ المخطط) وعميل مولَّد ومنمَّط (إكمال تلقائي وأمان الأنواع — ممتاز مع TypeScript).
الكائن process
كائن Node العمومي الذي يتيح الوصول إلى العملية: الوسائط (process.argv) ومتغيرات البيئة (process.env) والخروج (process.exit()).‎
التنميط / القياس قبل التحسين (Profilage / mesurer avant d'optimiser)
تحديد الاختناقات الحقيقية بالقياس قبل التحسين (قاعدة ذهبية)؛ وتجنب التحسين الأعمى أو المبكر.
البرمجة الحدثية (Programmation événementielle)
نموذج تُصدِر فيه كائنات أحداثًا وتتفاعل أجزاء أخرى من الكود بالاستماع؛ فصل باسم الحدث.
الوعد (Promise)
كائن يمثل قيمة مستقبلية (نتيجة عملية لامتزامنة). ثلاث حالات: معلق (pending) ومُنجَز (fulfilled) ومرفوض (rejected). التفاعل عبر .then() و .catch().‎
متى تُستخدَم التدفقات (Quand utiliser les streams)
كلما عالجنا أحجامًا كبيرة (ملفات ضخمة، رفع/تنزيل، تدفقات شبكة)؛ أما الملفات الصغيرة فيكفي readFile الكلاسيكي.
البيئة التفاعلية (REPL)
بيئة تفاعلية تُفتَح بكتابة ‎node‎ وحده: تقرأ/تقيّم/تطبع جافاسكربت سطرًا بسطر. مثالية للتجريب دون إنشاء ملف.
كائن الطلب (req / request)
كائن الطلب الوارد: الأسلوب (req.method: GET/POST…) والمسار (req.url) والترويسات (req.headers)، والجسم (يُقرَأ كتدفق في POST).‎
كائنات req / res المثراة (req / res enrichis)
req: هي req.params (المسار) و req.query (سلسلة الاستعلام) و req.body (الجسم). res: هي res.json(data) و res.status(201).json(...) و res.send و res.redirect.‎
require مقابل import
هما صياغتا الاستيراد: ‎require()‎ (كومون جي إس CommonJS) و ‎import‎ (وحدات ES)؛ افهم الاثنتين لأنهما تتعايشان في الكود الحقيقي.
كائن الرد (res / response)
كائن بناء الرد: الحالة (res.statusCode) والترويسات (res.setHeader) والجسم (res.write/res.end).‎
الدالة res.render()
أسلوب Express يعرض view: يولد ‎res.render('page', { données })‎ الـ HTML بحقن البيانات في القالب (مجلد views/).‎
الموارد وأساليب HTTP (Ressources & méthodes HTTP)
GET /users (سرد) و GET /users/:id (قراءة واحد) و POST /users (إنشاء) و PUT/PATCH /users/:id (تعديل) و DELETE /users/:id (حذف) — اصطلاحات متسقة.
الغرف (Rooms)
مجموعات عملاء (غرفة دردشة، مباراة) نذيع لها انتقائيًا؛ تنظم الاتصال في الوقت الحقيقي.
التوجيه (Routage)
ربط رابط + أسلوب HTTP بمعالجات: app.get('/users', ...) و app.post(...) إلخ. معاملات المسار الديناميكية: '/users/:id' ← req.params.id.‎
التوسع الأفقي / موزع الحمل (Scaling horizontal / load balancer)
توزيع الحمل على عدة خوادم/نسخ خلف موزع حمل؛ لخدمة عدد كبير جدًا من المستخدمين (يفضل التطبيقات عديمة الحالة stateless).
المخطط والنموذج (Schéma & modèle)
المخطط يعرّف بنية المستندات (أنواع وتحقق: required و unique وقيم افتراضية)؛ والنموذج، المُنشَأ من المخطط، يوفر أساليب المعالجة.
الأمان الشامل (Sécurité transversale)
هيلمت (Helmet) (ترويسات الأمان) و HTTPS والأسرار في متغيرات البيئة (أبدًا في الكود) وتحديد المعدل (rate limiting) والتحقق — و«لا تثق أبدًا بالمدخلات».
التنسيخ الدلالي وسكربتات npm (semver & scripts npm)
التنسيخ رئيسي.فرعي.تصحيحي (^ / ~ تتحكم في التحديثات المقبولة). سكربتات npm تعرّف أوامر قابلة لإعادة الاستخدام (npm run <nom>).‎
الجلسة مقابل JWT (Session vs JWT)
الجلسة: حالة في الخادم + ملف تعريف (cookie). أما JWT: رمز حامل ذاتي دون تخزين في الخادم. طريقتان للحفاظ على المصادقة (كون HTTP عديم الحالة).
سوكيت.يو (Socket.IO)
المكتبة المرجعية للوقت الحقيقي في Node: حدثية (emit/on)، مع إعادة اتصال تلقائية وبدائل وغرف (rooms) وفضاءات أسماء (namespaces).
لغة SQL
لغة الاستعلامات المنظمة: SELECT (قراءة) و INSERT (إنشاء) و UPDATE (تعديل) و DELETE (حذف) و JOIN (دمج جداول مرتبطة).
قواعد SQL / العلائقية (SQL / relationnel)
قواعد تنظم البيانات في جداول (أعمدة منمطة) وصفوف وعلاقات عبر مفاتيح أجنبية؛ PostgreSQL و MySQL. ضمانات قوية (مخطط صارم ومعاملات ACID).
العرض من جهة الخادم (SSR / Server-Side Rendering)
الخادم يولد HTML كاملًا ويرسله للمتصفح؛ نهج المواقع الكلاسيكية (المحتوى، تحسين الظهور SEO).
التدفق (Stream / flux)
معالجة البيانات قطعة قطعة (chunks)، أولًا بأول، بدل تحميل كل شيء في الذاكرة؛ فعال للأحجام الكبيرة (ذاكرة ووقتًا).
القالب النصي (Template literal)
سلسلة بعلامات مائلة تتيح إدخال المتغيرات: ‎`Bonjour ${nom}`‎ — أنظف من الدمج بـ +.‎
الوقت الحقيقي (Temps réel)
حالات يرسل فيها الخادم بيانات للعميل دون أن يطلبها، فوريًا (دردشة، إشعارات، بيانات حية، ألعاب)؛ غير ملائم لنموذج طلب-رد HTTP.
الطرفية / المسار PATH (Terminal / PATH)
وحدة التحكم حيث نطلق node و npm؛ يتحقق ‎node -v‎ و ‎npm -v‎ من التثبيت (إن أجابا، فـ Node في PATH).‎
الاختبارات المؤتمتة (Tests automatisés / Jest)
كود يختبر كودك: وحدوية (دالة معزولة) وتكاملية (عدة أجزاء/مسار مع قاعدته) وشاملة. Jest هو الإطار الشائع.
التنميط الثابت مقابل الديناميكي (Typage statique vs dynamique)
الثابت (TS): أنواع مصرَّح بها وتُتحقَّق قبل التنفيذ (عند الترجمة) — يمسك أخطاء مبكرًا. الديناميكي (JS): تُتحقَّق الأنواع فقط عند التنفيذ (مرن لكن مصدر علل وقت التشغيل).
أنواع التدفقات (Types de streams)
قابل للقراءة (Readable) وقابل للكتابة (Writable) ومزدوج (Duplex، مثل المقبس socket) ومحوِّل (Transform: يحول أثناء المرور: ضغط، تشفير).
تايب سكربت (TypeScript)
مجموعة عليا من جافاسكربت تضيف التنميط الثابت (كل JS صالح هو TS صالح)؛ تُترجَم إلى جافاسكربت عادية ينفذها Node.
التحقق من المدخلات (Validation des entrées)
التحقق من أن البيانات المستلمة من عميل بالصيغة المتوقعة (حقول مطلوبة وأنواع وقيود) قبل معالجتها؛ تُرفَض برمز 400 إن بطلت. المكتبات: Zod و Joi.
الخادم الافتراضي الخاص (VPS)
خادم افتراضي مستأجَر نديره بأنفسنا (Node والإعداد والأمان و PM2 و Nginx و HTTPS)؛ تحكم ومرونة أكبر، لكن مسؤوليات أكثر.
في إس كود (VS Code)
المحرر المعياري لـ Node/JavaScript: مجاني ودعم JS مدمج وطرفية مدمجة وإضافات (ESLint و Prettier) لجودة الكود وتنسيقه.
ويب سوكيت (WebSocket)
بروتوكول يؤسس اتصالًا دائمًا وثنائي الاتجاه: يبقى مفتوحًا، ويتبادل العميل والخادم الرسائل في أي وقت وفي الاتجاهين.
خيوط العمال (Worker threads)
خيوط منفصلة لتنفيذ مهام مكثفة المعالج (حسابات ثقيلة) دون حجب الخيط الرئيسي / حلقة الأحداث.