node.js – מבוא למתחיל

הרצת סקריפטים בג'אווהסקריפט בצד השרת. כן, בדיוק איך שזה נשמע.

מאמר זה נכתב בתחילת שנת 2011, כאשר Node.js היה עדיין בחיתוליו. חלק מהמידע בו מיושן יחסית. למתעניינים מומלץ לעיין במדריך Node.js שמלמד את Node.js באופן מקיף ומעמיק על חלונות ועל לינוקס.

node.js הפך בזמן האחרון לאחד מהבאזזוורדס הכי חזקות בתחום. בקצרה, מדובר בג'אווהסקריפט שרץ על בסיס מנוע V8 של גוגל על שרת לינוקס. השפה הזו מאפשרת לעשות דברים עם ג'אווהסקריפט בדומה לשפות צד שרת אחרות כגון PHP.

כיוון שמדובר במשהו שהוא מאד חדש, אין הרבה יישומים ל-node.js, אבל העתיד שלה נראה מבטיח. בין היתר הודות לפופולריות והחשיבות העצומה שג'אווהסקריפט תופסת בזמן האחרון וכן הודות למהירות האדירה שלה. כמו כן, הפיתוח בג'אווהסקריפט הוא מונחה אירועים ובכך מקל על השימוש במתודות פיתוח מתקדמות יותר.

יש דברים ממש מדהימים שאפשר לעשות עם node.js בצורה שקשה לחקות עם שפות תכנות אחרות, שימו לב ל-Tutti למשל. הנבואה ניתנה לשוטים, אבל יש לי הרגשה שזה הולך לתפוס. אז בואו ופנו לעצמכם כמה דקות ונתעסק קצת עם node.js.

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

התקנת node.js על לינוקס דביאן

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


sudo apt-get install g++ curl libssl-dev apache2-utils

יש להוריד את node.js ואז לפתוח אותו בתיקיה כלשהי. אחרי כן יש להפעיל את הפקודות הבאות.


cd PATH/TO/DOWNLOAD
./configure
make
sudo make install

הפעלה ראשונית של node.js בשורת הפקודה

עכשיו ניתן להפעיל את node.js, בואו ננסה לעשות איזה טסט. נכתוב משהו ונריץ אותו דרך שורת הכתובת. צרו קובץ ארביטרארי כלשהו (לצורך העניין test.js) והכניסו לתוכו את הפשתגן הבא:


console.log("Hello World");


הסקריפט הזה פשוט מאד, בואו ונריץ אותו! נכתוב:


node test.js

ונקבל 'Hello World' בשורת הפקודה. מגניב מאד וגם קצת משעמם.

יצירת שרת http

בואו וננסה משהו קצת יותר יישומי – ניצור שרת http שיאזין לפורט 8080 וידפיס לנו על הדפדפן hello world!

node.js עובדת עם מודולים רבים שבהם אנו יכולים להשתמש באמצעות require. כל המודולים נמצאים בדוקומנטציה של node.js. אנו נשתמש במודול http על מנת ליצור שרת:



http = require("http");

http.createServer(function(request, response) {
    response.sendHeader(200, {"Content-Type": "text/html"});
    response.write("Hello World!");
    response.close();
}).listen(8080);

console.log("Server running at http://localhost:8080/");


מודול http הוא מודול פשוט למדי וקל לראות מה עשינו בו. אם נלך ל: http://localhost:8080 נוכל לראות את ה-Hello World כתוב בדפדפן עצמו.

שרת אינטרנט אמיתי

כמובן שאנחנו צריכים משהו קצת יותר רציני מלהדפיס 'שלום עולם', למה שלא ניצור שרת http שמסוגל להציג גם דפים, תמונות וקבצים? זה פשוט ביותר. ניצור בתיקיה מסוימת קובץ בשם index.html וקובץ בשם server.js שאליו נכניס את הקוד הבא:


http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs");

http.createServer(function(request, response) {
    var uri = url.parse(request.url).pathname;
    var filename = path.join(process.cwd(), uri);
    path.exists(filename, function(exists) {
        if(!exists) {
            response.writeHead(404, {"Content-Type": "text/plain"});
            response.write("404 Not Found\n");
            response.end();
            return;
        }

        fs.readFile(filename, "binary", function(err, file) {
            if(err) {
                response.writeHead(500, {"Content-Type": "text/plain"});
                response.write(err + "\n");
                response.end();
                return;
            }

            response.writeHead(200);
            response.write(file, "binary");
            response.end();
        });
    });
}).listen(8080);


כניסה אל http://localhost:8080/index.html תציג לנו את העמוד שלנו. חמוד, לא? במאמרים הבאים אני אראה עוד כמה דברים מגניבים שאפשר לעשות עם node.js

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

מיקרו בקרים

חיבור מצלמה למיקרובקר

חיבור מצלמה למיקרו בקר ויצירה של מצלמת אבטחה מרחוק בעלות של 20 שקל.

DALL·E 2024-09-06 12.34.24 - A visually engaging post about Python and cryptographic problems. The image should feature a dark-themed background with a glowing, futuristic Python
פתרונות ומאמרים על פיתוח אינטרנט

בעיות במימוש של פונקציות קריפטוגרפיות בפייתון

היום (16 לספטמבר) ממש, אני מעביר הרצאה ב-PyconIL 2024 על בעיות קריפטוגרפיות באפליקציות פייתון. לצערי אי אפשר להכניס את כל הבעיות הקריפטוגרפיות להרצאה אחת או

רספברי פיי

מה זה AIoT? ואיך אפשר להתחיל?

פוסט עם המון קישורים, מידע, סרטונים ופרק בפודקאסט שיפתח לכם שער לעולם ה-AIoT המרתק.

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