מה זה Node.js ולמה אנחנו צריכים אותו?

מה זה Node.js?
Node.js היא פלטפורמת JavaScript צד-שרת, שמבוססת על מנוע ה-V8 של גוגל כרום. ב-Node.js, אנחנו יכולים להריץ קוד JavaScript בצד השרת, בניגוד לדפדפן בו JavaScript רץ בדרך כלל בצד הלקוח.
בעצם, Node.js מאפשר לנו להשתמש ב-JavaScript לפיתוח אפליקציות סרבר, כמו APIs, שרתים דינמיים, ואפילו מערכות ניהול מסדי נתונים, בעזרת הכלים שמספקת הפלטפורמה.
למה צריך את זה? אם היינו צריכים להשתמש בשפות כמו PHP או Python בצד השרת, היינו צריכים לשלב שפות שונות בכל פרויקט, מה שמסבך את העבודה. Node.js מאפשר לנו לעבוד עם JavaScript גם בצד השרת, כך שיש לנו שפה אחת לפיתוח כל האפליקציה.
למה אנחנו צריכים Node.js?
אם נחשוב על פיתוח אפליקציות אתרים, אנו רואים שמרבית הפיתוח מתרחש בצד הלקוח — מה שמשמעותו הוא שלפעמים נצטרך לעבוד עם JavaScript גם בצד השרת. ב-Node.js, אנחנו יכולים להשתמש בדיוק באותו קוד JavaScript, ולא נצטרך להחליף בין שפות במהלך הפיתוח.
Node.js מציעה לנו מספר יתרונות משמעותיים:
- מהירות: Node.js מבוסס על מנוע V8 של גוגל, שהוא מאוד מהיר.
- אסינכרוניות: Node.js עושה שימוש בטכניקות אסינכרוניות ומאפשר הרצת קוד בצורה לא חסימנית (non-blocking), מה שמייעל את הביצועים של האפליקציות.
- קוד אחיד: כי אנחנו משתמשים באותה שפה (JavaScript) בצד הלקוח ובצד השרת, אנחנו לא צריכים ללמוד שפות שונות.
- קהילת פיתוח גדולה: Node.js נהנה מקהילת פיתוח פעילה מאוד שמספקת מודולים רבים ואפשרויות רבות לשדרוגים.
דוגמה פשוטה של קוד ב-Node.js
כדי להבין איך Node.js עובד, נסתכל על דוגמה פשוטה מאוד של קוד שמפעיל שרת ב-Node.js.
// דרישה למודול http של Node.js const http = require('http'); // יצירת שרת פשוט const server = http.createServer((req, res) => { res.statusCode = 200; // קוד הצלחה res.setHeader('Content-Type', 'text/plain'); // סוג התוכן res.end('Node.js-שלום!, ברוך הבא ל' ); // מה שיחזור למבקש }); // מאזין על פורט 3000 server.listen(3000, '127.0.0.1', () => { console.log('השרת פועל בכתובת http://127.0.0.1:3000/'); });
הסבר על קוד Node.js שמפעיל שרת פשוט:
- ייבוא המודול http:
ב-Node.js, מודול http הוא חלק מובנה בפלטפורמה, והוא מאפשר לנו ליצור שרתים שמטפלים בבקשות HTTP (בקשות של דפדפנים למשל). כאן אנחנו "דורשים" (import) את המודול כדי להשתמש בו בקוד שלנו.
- יצירת השרת:
const server = http.createServer((req, res) => { res.statusCode = 200; // קוד הצלחה res.setHeader('Content-Type', 'text/plain'); // סוג התוכן res.end('Node.js!-שלום!, ברוך הבא ל'); // מה שיחזור למבקש });
כאן אנחנו יוצרים שרת באמצעות הפונקציה http.createServer.
הפונקציה מקבלת Callback Function (פונקציה שתופעל לכל בקשת HTTP).
הפונקציה מקבלת שני פרמטרים:
req: אובייקט שמייצג את הבקשה של המשתמש (Request).
res: אובייקט שמייצג את התשובה שאנחנו שולחים למשתמש (Response).
בפונקציה:
res.statusCode = 200; אנחנו מציינים את קוד התשובה.
200: פירושו "הכל תקין".
res.setHeader('Content-Type', 'text/plain'); אנחנו מגדירים את סוג התשובה שאנחנו שולחים.
כאן זה טקסט פשוט (Plain Text).
res.end('שלום, ברוך הבא ל-Node.js!');
הפונקציה end מסיימת את התשובה ושולחת את הטקסט שלום, ברוך הבא ל-Node.js! לדפדפן או ללקוח שביקש.
- הפעלת השרת:
server.listen(3000, '127.0.0.1', () => { console.log('השרת פועל בכתובת http://127.0.0.1:3000/'); });
כאן אנחנו מורים לשרת להאזין לבקשות שמגיעות לכתובת 127.0.0.1 (המחשב המקומי, Localhost) ולפורט 3000.
הפונקציה listen מקבלת שלושה פרמטרים: מספר הפורט: הכתובת שאליה פונים כדי לגשת לשרת (במקרה הזה, 3000).
כתובת ה-IP: כתובת המחשב המקומי שלנו (במקרה הזה, 127.0.0.1). Callback Function: פונקציה שתופעל כשהשרת יתחיל לפעול.
כאן אנחנו מדפיסים הודעה לקונסול: השרת פועל בכתובת http://127.0.0.1:3000/.
מה התוצאה?
הרצת הקוד: אם נריץ את הקוד בטרמינל עם הפקודה node <שם_הקובץ>.js, נקבל הודעה בקונסול:
השרת פועל בכתובת http://127.0.0.1:3000/
גישה לשרת:
אם ניכנס לדפדפן ונקליד את הכתובת http://127.0.0.1:3000/, נראה את ההודעה:
Node.js!-שלום!, ברוך הבא ל
לסיכום:
הקוד הזה יוצר שרת פשוט ב-Node.js שמחזיר תשובה סטטית לכל בקשה. זהו הבסיס ליצירת שרתים מורכבים יותר שמטפלים בבקשות, עובדים עם מסדי נתונים, או מציגים אפליקציות דינמיות.