מדריך 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), גיל פינק ומתכנתים מעולים נוספים. 

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

תמונה מצוירת של רובוט שמנקה HTML
יסודות בתכנות

סניטציה – למה זה חשוב

הסבר על טכניקה פשוטה וידועה מאד שאנו מפעילים על מידע לפני שאנחנו מציגים אותו ב-HTML באפליקציה או באתר.

ספריות ומודולים

מציאת PII באמצעות למידת מכונה

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

פתרונות ומאמרים על פיתוח אינטרנט

יישום של nonce על מנת להגן מפני התקפות injection

בפוסט הקודם הסברתי על hash עם CSP על משאבי inline – שזה נחמד ומעולה אבל פחות ישים בעולם האמיתי שבו בדרך כלל התוכן ה-inline (בין

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