📘 Node.js Backend - קורס פיתוח בצד השרת

Node.js היא סביבת ריצה מבוססת JavaScript לפיתוח אפליקציות בצד השרת. בעזרת גישה אסינכרונית, ניהול מודולים ו-NPM – נבנה שרתים, APIים, ונטפל בקבצים, אירועים וזרמים בצורה מודרנית ויעילה.

🧭 מה נלמד בקורס?

  • 🔹 מבוא ל-Node.js: מהי סביבת Node, REPL ו־CLI
  • 🔹 מודולים: יצירת מודולים, מודולים מובנים (fs, path, os, http)
  • 🔹 מערכת קבצים: קריאה/כתיבה לקבצים בצורה סינכרונית וא-סינכרונית
  • 🔹 בניית שרת: שימוש ב־HTTP module, ניהול בקשות ותגובות
  • 🔹 NPM: התקנת חבילות, שימוש ב־package.json ו־nodemon
  • 🔹 Event Loop: איך Node מטפל באירועים וקוד א-סינכרוני
  • 🔹 הבטחות (Promises): שימוש ב־async/await, טיפול בקוד לא חוסם
  • 🔹 EventEmitter: יצירת וניהול אירועים מותאמים אישית
  • 🔹 Streams: עבודה עם זרמים לקריאה/כתיבה יעילה של קבצים
  • 🔹 תרגול מעשי: בניית פרויקטים בצד שרת עם קוד אמיתי

הקורס מתאים לכל מי שרוצה לפתח אפליקציות צד שרת ב-JavaScript, להבין איך Node.js פועלת מאחורי הקלעים, ולשלוט בכלים החיוניים של עולם ה-Backend.

במהלך הקורס נבנה מספר פרויקטים מעשיים שכוללים שימוש אמיתי ביכולות של Node.js, Express ו־MongoDB: API לניהול משימות, חנות וירטואלית, מערכת הרשאות עם JWT, שליחת מיילים, תשלומים עם Stripe, העלאת תמונות, ואפילו פרויקט מסחרי מלא של E-Commerce כולל הרשמה, התחברות וניהול משתמשים.

🧪 דוגמאות קוד ב-Node.js

🚀 יצירת שרת HTTP פשוט

דוגמה זו יוצרת שרת בסיסי שמאזין בפורט 3000 ומחזיר טקסט למשתמש. זה הבסיס לבניית API או דפי HTML.

const http = require('http');

const server = http.createServer((req, res) => {
  res.write('Welcome to Node.js Server!');
  res.end();
});

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

📁 קריאת קובץ בצורה אסינכרונית

קוד זה מדגים כיצד לקרוא קובץ טקסטי מהמחשב בצורה לא חוסמת, כדי להמשיך פעולות נוספות בזמן הקריאה.

const fs = require('fs');

fs.readFile('./data.txt', 'utf8', (err, data) => {
  if (err) return console.error(err);
  console.log(data);
});

📣 יצירת אירוע מותאם אישית

כאן נוצר אובייקט EventEmitter, שמגיב לאירוע בשם "response" ומבצע פעולה בהתאמה – כלי חשוב ליצירת מערכות מודולריות.

const EventEmitter = require('events');

const customEmitter = new EventEmitter();

customEmitter.on('response', (name, id) => {
  console.log(`Data received: name=${name}, id=${id}`);
});

customEmitter.emit('response', 'Eylon', 101);

📜 קריאת קובץ עם async/await

הדוגמה הזו מציגה את השיטה המודרנית לקרוא קבצים בעזרת `async/await`. הקוד נראה מסודר יותר ונוח לקריאה לעומת callbacks.

const fs = require('fs').promises;

async function readFileAsync() {
  try {
    const data = await fs.readFile('./data.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error('Error reading file:', err);
  }
}

readFileAsync();