מדריך Node.js: התקנת סביבת עבודה והתחלה

הסבר על Node.js - איך מריצים קוד ואיך מתקינים סביבת עבודה להתחלת למידה משמעותית
Node.js Logo

Node.js היא שפה שרצה בצד שרת. בדיוק כמו PHP, JAVA או net. השפה יכולה להתחבר למסדי נתונים (כמו MongoDB או MySQL) ולעשות כל מה שאפשר לעשות בצד שרת כמו כל שפה. Node.js היא בעצם JavaScript על צד שרת שנעזרת במנוע V8 שגוגל פיתחה.

אז מה מיוחד ב-Node.js?

  1. כיוון שהיא מערכת שעובדת על Thread אחד – ויכולה לקבל עשרות אלפי בקשות בלי להעמיס על המערכת. PHP למשל, או JAVA לא מסוגלות לטפל ביותר מעשרת אלפי בקשות על גבי שרת אחד (ואז אנחנו צריכים להוסיף עוד שרתים). זה הכוח החזק של Node.js.
  2. הרבה מתכנתים מכירים כבר את JavaScript ואם משתמשים גם ב-MongoDB אין צורך להכיר מגוון שפות כיוון שגם בצד השרת וגם בצד הלקוח משתמשים ב-JavaScript.
  3. Node.js היא מערכת שיש לה המון מודולים ותוספות. בדומה ל-jQuery שתפסה בזמנו תאוצה אדירה בגלל כמות התוספים, כך גם Node.js

למרות היתרונות הגדולים של Node.js, כיוון שהיא בנויה מראש ל-input output מהיר אך לא חזקה מאוד בחישוביות, לא הייתי משתמש בה לאפליקציות שצריכות כוח חישוב רציני. אבל לאפליקציות ווב שצריכות להיות סקלביליות – Node.js היא בחירה מצוינת.

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

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

אם אתם מכירים את השפה אז אפשר להתחיל:

אז איך מתחילים? Node.js ניתן להתקנה על כל פלטפורמה – לינוקס, מק או חלונות. ההתקנה על לינוקס היא פשוטה ביותר:


sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm

אם יש לכם חלונות או מק, יש באתר הרשמי של node.js הוראות התקנה מסודרות. רק להוריד את ה-installer ולהריץ.

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


nodejs --version

אפשר להקליד את זה גם ב-cmd של חלונות לאחר ההתקנה המוצלחת.


node --version

(בחלונות זה node בלבד) – אם הכל תקין נראה את מספר הגרסה.

זה לא שונה מלכתוב php -v בקונסולה.

בניגוד ל-PHP שמשתמשת ב-Apache או JAVA שמשתמשת ב-Tomcat, ב-Node.js אנחנו לא יכולים לעשות את זה. Node.js עובדת עם שרת משלה שאנו צריכים לממש אותו. בלי לממש אותו, נוכל להריץ Node.js דרך שורת הפקודה, אבל לא נוכל לראות אותו בדפדפן.

איך מריצים Node.js דרך שורת הפקודה? בקלות. כותבים nodejs (בחלונות יש לכתוב node) ונכנסים אל הקונסולה של Node.js, עכשיו אפשר להקליד דברים. בואו ננסה!


$ nodejs
> console.log('Hello World!');
Hello World!
undefined

מה הלך פה? כל מה שעשינו זה להשתמש ב-console.log כדי להדפיס משהו. הוא אכן הודפס ואז קיבלנו undefined כי זה מה ש-console.log מחזירה. ל-undefined אין משמעות.

אנחנו יכולים להריץ גם Node.js לא רק דרך הקונסולה (כי זה יהיה גיהנום) אלא גם באמצעות קובץ JS רגיל. בואו וניצור test.js שבו יהיה כתוב console.log בדומה לעיל. נשמור אותו כקובץ test.js. איך נריץ אותו? בדיוק כך:


$ nodejs
$ nodejs test.js 
Hello World!

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

במאמר הבא אנו נלמד על קוד אסינכרוני ב-Node.js

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

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

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

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

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

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