Menu

מה זה Node.js? סביבת ההרצה של JavaScript בהסבר פשוט

Node.js היא סביבת הרצה שמריצה JavaScript מחוץ לדפדפן, על שרתים ובטרמינל. היא לא שפה ולא framework: היא V8 ועוד לולאת אירועים ועוד APIs לקבצים, לרשת ולתהליכים.

בדף הזה יש עורכים שאפשר להריץ. לערוך, להריץ ולראות את הפלט מיד.

Node.js היא סביבת הרצה (runtime) שמריצה JavaScript מחוץ לדפדפן: על שרת, בטרמינל או ככלי שורת פקודה. היא לא שפת תכנות (השפה היא JavaScript) וגם לא framework (Express הוא framework שרץ על Node.js). היא משלבת את מנוע V8 של Google, שמריץ JavaScript, עם לולאת אירועים ו-APIs מובנים לקבצים, לרשת ולתהליכים שאין בדפדפנים.

התוכנית הדפיסה את תוכן הקובץ, את הגרסה הראשית (v24), ו-undefined עבור window, כי ב-Node.js אין דף web שיספק אותו. fs ו-process קיימים רק ב-Node.js; הריצו את אותן שורות בלשונית דפדפן, והשורה הראשונה תזרוק שגיאה.

Node.js זה framework או שפה?

אף אחד מהם. JavaScript היא השפה. Node.js היא התוכנה שמריצה אותה, בדיוק כמו שה-JVM מריץ Java או ש-CPython מריץ Python. ה-frameworks יושבים מעליה: Express, Fastify ו-NestJS הם ספריות שמתקינים בפרויקט Node.js. הדף Node.js מול JavaScript משווה ביניהם בפירוט.

מתחת למכסה המנוע, Node.js בנוי מארבעה חלקים:

  • V8, מנוע ה-JavaScript של Chrome. הוא הופך את הקוד שלכם לקוד מכונה ומריץ אותו.
  • libuv, ספריית C שמספקת את לולאת האירועים ומבצעת עבודה איטית (דיסק, רשת, טיימרים) ברקע, ואז מחזירה את התוצאה ל-callbacks שלכם.
  • ה-APIs של Node עצמו: fs לקבצים, http לשרתים, path, process, crypto, events ועוד, זמינים עם require או import בלי שום התקנה.
  • npm, מנהל החבילות שמגיע עם Node.js ונותן גישה למאגר החבילות הגדול ביותר מכל שפה.

איך מריצים קובץ Node.js

התקינו את Node.js מהאתר שלו (בחרו בגרסת ה-LTS), ואז בדקו אותו מהטרמינל והריצו קובץ:

node --version     # prints v24.x.x or similar
node app.js        # runs app.js and exits when it has nothing left to do
node               # with no file: an interactive prompt (the REPL)

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

I/O לא חוסם, הרעיון המרכזי

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

שתי שורות ה-console.log שאחרי readFile רצו קודם, ותוכן הקובץ הגיע אחרון. כך תהליך Node.js אחד משרת אלפי חיבורים: בזמן שבקשה אחת מחכה למסד הנתונים, לולאת האירועים ממשיכה לקדם את האחרות.

Node.js מול הדפדפן

דפדפןNode.js
רץבתוך דף webבטרמינל או על שרת
יש בוwindow, document, ה-DOM, localStoragefs, process, http, Buffer, require
האובייקט הגלובליwindow (וגם globalThis)global (וגם globalThis)
קבצים בדיסקאין גישהגישה מלאה, עם ההרשאות של המשתמש שלכם
setTimeout, console, fetch, URLכןכן

למה משתמשים ב-Node.js

  • שרתי web ו-APIs: backends של REST ו-GraphQL, לרוב עם Express.
  • אפליקציות בזמן אמת: צ'אט, דשבורדים חיים ומשחקים מרובי משתתפים מעל WebSockets, כשהרבה חיבורים נשארים פתוחים בבת אחת.
  • כלי שורת פקודה: npm עצמו, Vite, ESLint, Prettier והקומפיילר של TypeScript רצים כולם על Node.js.
  • סקריפטים ואוטומציה: שינוי שמות של קבצים, קריאה ל-APIs, העברת נתונים.

השימוש הנפוץ ביותר הוא שרת HTTP, והמודול המובנה http מספיק לשרת ראשון:

השרת ענה ל-GET /hello עם הנתיב שקיבל. שנו את הנתיב בשורת הבקשה ל-/anything ושלחו: התשובה משתנה בהתאם, כי השרת הזה מטפל בכל URL עם פונקציה אחת.

מתי לבחור ב-Node.js

בחרו ב-Node.js כשרוב העבודה היא המתנה ל-I/O (בקשות, מסדי נתונים, קבצים) ואתם רוצים שפה אחת ל-frontend ול-backend. הוא מתאים פחות לחישובים ארוכים וכבדים על המעבד, כמו קידוד וידאו או עבודה מספרית גדולה, כי חישוב ארוך חוסם את ה-thread היחיד של JavaScript וכל בקשה אחרת מחכה לו.

שאלות נפוצות

Node.js זה frontend או backend?

בעיקר backend. Node.js רץ על שרת או על המחשב שלכם, לא בדפדפן של המבקר. גם מפתחי frontend משתמשים בו כל יום, כי כלים כמו npm, Vite ו-ESLint הם תוכניות Node.js.

מי יצר את Node.js ומתי?

ריאן דאל (Ryan Dahl) שחרר את Node.js ב-2009. היום הוא מתוחזק על ידי OpenJS Foundation, עם גרסה ראשית חדשה כל שישה חודשים, והגרסאות הזוגיות מקבלות תמיכה ארוכת טווח.

צריך לדעת JavaScript לפני Node.js?

כן, לפחות את הבסיס: משתנים, פונקציות, אובייקטים, מערכים, ו-callbacks או promises. Node.js מוסיף APIs, לא תחביר חדש, כך שכל מה שלומדים על השפה תקף גם בו.

האם Node.js הוא single-threaded?

קוד ה-JavaScript שלכם רץ על thread אחד. מאחורי הקלעים Node.js משתמש ב-thread pool קטן לעבודה עם מערכת הקבצים, DNS וחלק מפעולות ההצפנה, כך ש-I/O איטי לא חוסם את הקוד בזמן שהוא מחכה.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל