מדריך Node.js: שימוש במודולים בסיסיים

דוגמה של שימוש במודול http ובמתודות שלו ב-Node.js
Node.js Logo

במאמר הקודם דיברנו על require שהוא הדרך להשתמש במודולים (מודולי ליבה או מודולים אחרים) עם Node.js. במאמר הזה אנו נדבר על מודולים אחרים שיש בליבה של Node.js.

עד עכשיו עבדנו בעיקר מול הקונסולה (לינוקס או, ישמרנו האלוהים, חלונות) – אבל עם כל הכבוד לקונסולה – אנחנו מתכנתי אינטרנט ואנחנו רוצים לראות דברים מגניבים על הדפדפן שלנו! במאמר הראשון בסדרה, ציינתי שבניגוד לשפות צד שרת יותר קונבנציונליות כמו PHP או JAVA, ב-Node.js אין שרת אלא Node.js בעצמה היא השרת. המימוש של שרת הוא די פשוט ונעשה עם מודול http. כך זה נראה:


http = require("http"); //The require

var MyServer = http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/html"});
    response.write("Hello World!");
    response.end();
});

MyServer.listen(3000);

console.log("Server running at http://localhost:3000/"); //Printing to the console only

באופן עקרוני אין כאן משהו שיפיל אתכם. יש כאן את ה-require שאותו אנו מכירים מקודם. אובייקט ה-http הוא בעצם ה-export שמוחזר לנו ממודול http. הוא כולל מתודה שנקראת createServer. את המתודה אפשר למצוא בדוקומנטציה המחרידה של http דרך אגב.
המתודה הזו מקבלת רק ארגומנט אחד: ה-callback! בו אנו מעבירים שני ארגומנטים – request ו-response. ה-response הוא התגובה וה-request זה פרטים של הבקשה. בדוקומנטציה כתוב ש:

request is an instance of http.IncomingMessage and response is an instance of http.ServerResponse.

אם נציץ בדוקומנציה ב:http.ServerResponse נוכל לראות את שלוש המתודות שהשתמשנו בהן: writeHead, write ו-end. לא צריך להיות גאון גדול בשביל להבין מה הן עושות, אבל באותו מקום בדוקומנטציה יש מתודות מעניינות נוספות. למשל setHeader- אם נשתמש בקוד הזה שהעתקתי בדוקומנטציה:


response.setHeader("Set-Cookie", ["type=ninja", "language=javascript"]);

נוכל לראות שהתווספה לנו cookie מגניבה!

אם נחפש את http.IncomingMessage בדוקומנטציה, נראה של-request יש גם מתודות ותכונות מעניינות במיוחד. כך למשל אנחנו יכולים להציג בפני המשתמש את גרסת ה-http שלו!


http = require("http"); //The require

var MyServer = http.createServer(function(request, response) {
    response.setHeader("Set-Cookie", ["type=ninja", "language=javascript"]);
    response.writeHead(200, {"Content-Type": "text/html"});
    response.write("Hello World!");
    response.write(request.httpVersion);
    response.end();
});

MyServer.listen(3000);

console.log("Server running at http://localhost:3000/"); //Printing to the console only

טוב, גם אם לא נעוף על זה, אפשר לקבל דברים אחרים מהמשתמש – כמו למשל את ה-URL שהוא רוצה (חשוב ל-routing!) או למשל את ה-headers שלו.

טוב, אז שרת יצרנו, איך ניגשים אליו? אנו שומרים את הקוד שלעיל כ-myserver.js ואז כותבים בקונסולה nodejs myserver.js. עכשיו אפשר לגשת ל-http://localhost:3000 ולראות את התוצאה. אם יש לכם מחשבים אחרים ברשת, אתם יכולים לנסות ולגשת אל ה-ip של המחשב שמריץ את Node.js ולראות את התוצאות.
אני ממליץ בחום רב לתרגל כאן, פשוט להעתיק את הקוד הזה, להסתכל בדוקומנטציה ולנסות לעשות כל מיני דברים. זה אחד הקודים הפשוטים ביותר של Node.js וממש קל ליישם אותו ולשנות אותו.

במאמר הבא אנו נמשיך לעבוד על הקוד ונבחן מודולים נוספים ומעניינים.

⚠️ תזכורת – המדריכים האלו הם רק טעימה, בספר שלי "ללמוד Node.js בעברית" יש הסברים מלאים ומקיפים על השפה המיועדים ללימוד עצמי. עם תרגילים והסברים. הספר יצא לאור בשיתוף הקריה האקדמית אונו ובתמיכת החברות אלמנטור, ו-Iron source ונערך טכנית על ידי בנג'י גרינבאום (מפתח ליבה של Node.js), גיל פינק ומתכנתים מעולים נוספים. 

פוסטים נוספים שכדאי לקרוא

מיקרו בקרים

הפעלת מסך oled קטנטן עם esp32

יצירת מערכת מולטימדיה שלמה בגודל של בול דואר עם מיקרובקר ובעלות של דולרים בודדים. וגם על הדרך נלמד על ת׳רדים

בינה מלאכותית

להריץ ממשק של open-webui על הרספברי פיי

להפעיל ממשק של צ׳אט ג׳יפיטי שאפשר לגשת אליו מכל מחשב ברשת הביתית על רספברי פיי עם מודל בשם tinydolphin שרץ על רספברי פיי.

DALL·E 2023-10-21 22.28.58 - Photo of a computer server room with red warning lights flashing, indicating a potential cyber threat. Multiple screens display graphs showing a sudde
יסודות בתכנות

מבוא לאבטחת מידע: IDOR

הסבר על התקפה אהובה ומוצלחת שבאמצעותה שואבים מידע מאתרים

גלילה לראש העמוד