רקע והיסטוריה

מהו Node.js?

Node.js הוא סביבת הרצה (Runtime Environment) שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן.

עד להמצאת Node.js ב-2009, JavaScript יכלה לרוץ רק בתוך דפדפנים (Chrome, Firefox, וכו'). Node.js שינה את זה לחלוטין.

┌─────────────────────────────────────────────────────┐
│                    JavaScript                        │
├──────────────────────┬──────────────────────────────┤
│   בדפדפן (Frontend)  │   ב-Node.js (Backend)        │
├──────────────────────┼──────────────────────────────┤
│ - DOM manipulation   │ - שרתים                      │
│ - אינטראקציה עם משתמש│ - גישה לקבצים               │
│ - אנימציות          │ - מסדי נתונים                │
│ - בקשות AJAX        │ - כלי CLI                    │
└──────────────────────┴──────────────────────────────┘

ההיסטוריה הקצרה

2009 - הלידה

Ryan Dahl יצר את Node.js כי הוא התסכל מהדרך שבה שרתים מטפלים בבקשות מרובות.

הרעיון המרכזי: במקום לחכות לפעולה אחת שתסתיים (כמו קריאה ממסד נתונים), אפשר להמשיך לעבוד על דברים אחרים בינתיים.

2010 - npm נולד

npm (Node Package Manager) הפך את השיתוף של קוד לקל מאוד. היום יש מעל 2 מיליון חבילות ב-npm!

2015 - io.js והאיחוד

היה פיצול קצר לפרויקט בשם io.js, אבל הם התאחדו חזרה ויצרו את Node.js Foundation.

2022 עד היום - Node.js מודרני

בשנים האחרונות Node.js הכניס לתוכו הרבה ממה שפעם דרש חבילות חיצוניות:

  • fetch מובנה, כמו בדפדפן, בלי להתקין ספרייה.
  • node --watch שמריץ מחדש בכל שמירה, במקום nodemon.
  • node --env-file=.env שטוען משתני סביבה, במקום dotenv.
  • node:test, מריץ בדיקות מובנה.
  • הרצה ישירה של קובצי TypeScript (node app.ts), מגרסה 22.18 ומגרסה 23.6 ואילך.

על כולם נרחיב בשיעור כלים מובנים של Node.js מודרני.

היום

Node.js הוא אחד הכלים הפופולריים ביותר בעולם הפיתוח. חברות כמו Netflix, PayPal, LinkedIn ו-NASA משתמשות בו. גרסה זוגית חדשה יוצאת כל שנה באפריל והופכת ל-LTS (תמיכה ארוכת טווח) באוקטובר. לעבודה אמיתית בוחרים תמיד גרסת LTS.


מנוע V8

Node.js משתמש במנוע V8 של Google - אותו מנוע שמריץ JavaScript ב-Chrome.

┌─────────────────────────────────────────┐
│            הקוד שלך (JavaScript)         │
└─────────────────┬───────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────┐
│              מנוע V8                    │
│  (מתרגם JavaScript לקוד מכונה)         │
└─────────────────┬───────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────┐
│          מערכת ההפעלה                    │
│    (קבצים, רשת, תהליכים)                 │
└─────────────────────────────────────────┘

למה זה חשוב? V8 מהיר מאוד. הוא מקמפל JavaScript ישירות לקוד מכונה במקום לפרש אותו שורה-שורה.


למה Node.js מיוחד?

1. Non-blocking I/O (קלט/פלט לא חוסם)

הבעיה המסורתית:

בקשה 1 → חכה לתשובה ממסד נתונים (2 שניות) → המשך
בקשה 2 → חכה לתשובה מקובץ (1 שנייה) → המשך
סה"כ: 3 שניות

הפתרון של Node.js:

בקשה 1 → שלח למסד נתונים
בקשה 2 → שלח לקובץ (לא מחכים לבקשה 1!)
כשהתשובות מגיעות → טפל בהן
סה"כ: ~2 שניות

2. שפה אחת לכל מקום

  • Frontend: JavaScript בדפדפן
  • Backend: JavaScript ב-Node.js
  • Full Stack: מפתח אחד יכול לעבוד על הכל!

3. npm - המערכת האקולוגית הגדולה בעולם

צריכים לשלוח מיילים? יש חבילה לזה. צריכים להתחבר ל-MongoDB? יש חבילה לזה. צריכים כמעט כל דבר? כנראה שיש חבילה לזה.

npm install express    # framework לשרתים
npm install axios      # בקשות HTTP
npm install mongoose   # עבודה עם MongoDB

4. ביצועים מעולים

הודות ל-V8 והארכיטקטורה האסינכרונית, Node.js מתאים לאפליקציות עם הרבה משתמשים בו-זמנית.


שימושים נפוצים

סוג דוגמאות
שרתי API REST APIs, GraphQL
אפליקציות Real-time צ'אט, משחקים, שיתוף פעולה
כלי שורת פקודה (CLI) npm, webpack, eslint
Microservices שירותים קטנים ועצמאיים
Server-Side Rendering Next.js, Nuxt.js

מתי לא להשתמש ב-Node.js?

Node.js לא מתאים ל:

  • חישובים כבדים (עיבוד וידאו, למידת מכונה) - Node.js הוא single-threaded
  • אפליקציות שדורשות real-time response מדויק - עדיף שפות כמו C++

סיכום

מאפיין הסבר
מהו סביבת הרצה ל-JavaScript
נוצר 2009 על ידי Ryan Dahl
מבוסס על מנוע V8 של Chrome
יתרון עיקרי Non-blocking I/O
מערכת חבילות npm

→ המשך ליסודות

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. מה Node.js מאפשר?

    1. להריץ Java
    2. להריץ JavaScript מחוץ לדפדפן, למשל בשרת
    3. לעצב דפים
    4. לבנות מסד נתונים
    הצגת התשובה

    תשובה ב. Node.js לוקח את מנוע V8 של Chrome ומריץ איתו JavaScript בכל מקום.

  2. באיזו גרסה של Node.js כדאי להשתמש בפרויקט אמיתי?

    1. גרסה אי-זוגית
    2. 12
    3. גרסת LTS
    4. הכי חדשה, גם אם לא יציבה
    הצגת התשובה

    תשובה ג. גרסאות LTS מקבלות תמיכה ועדכוני אבטחה לאורך זמן.