Node.JS קורס: הסודות של node.js

הסודות של node.js

נכתב על ידי עמיחי היינס

למה node.js הצליח במקום בו שרתים מבוססי JS אחרים נכשלו?


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


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

מלחמת הדפדפנים וביצועי Javascript

בתחילת שנות 2000, התחילו לפתח אפליקציות AJAX מה שהגדיל את הדרישה ממנועי ה-Javascript בדפדפנים. המרוץ לשיפור ביצועי מנועי Javascript התחמם בספטמבר 2008 כשגוגל שחררה את chrome. המנוע מאחורי הדפדפן - V8 הביס את כל האחרים. דבר זה יצר חזית חדשה במלחמות הדפדפנים.

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

השיקום של Javascript

Javascript נחשבה בעבר לאלתור נוראי. מתכנתים רבים עדיין מרגישים כך היום, אך הדעה הקדומה הזו מתחילה להתפוגג, בעיקר כי יש גוף גדל והולך של קוד איכותי שמציג לראווה את היכולות של השפה. שרתים שהשתמשו ב-Javascript בעבר התקשו הרבה יותר לשכנע מתכנתים לשנות את הגישה השלילית שלהם כלפי השפה.

Node.js פותר בעיה אמיתית

Javascript בעצמו לא יכול בעצם לכתוב או לקרוא קבצים. יכולת זו הושמטה מהשפה כי היא לא היתה נחוצה בדפדפן. זאת הסיבה שניתן היה לפתח את הקלט/פלט של השפה מהיסוד כך שיתבסס על לולאת הארועים.
ריאן דאהל השתמש בדוגמה הזו במצגת שלו משנת 2009 להסביר את לולאת הארועים:
var result = db.query("select..");
 // use result
במקרה הזה השאילתה חוסמת את המשך ריצת התכנית לגמרי עד שהשאילתה חוזרת עם תוצאות, בעוד שבלולאת ארועים:
db.query("select..", function (result) {
 // use result
 });
התכנית יכולה להמשיך לעשות דברים אחרים בזמן שמחכים לפונקציית ה - callback כדי לטפל בתוצאות.
Node מספקת ספריות לא חוסמות לבסיסי נתונים ולגישה לרשת ולקבצים. כך בנוסף לשיפורים בביצועים ש Node מקבלת "בחינם" על ידי שימוש במנוע Javascript של V8 מודל לולאת הארועים מאפשרת ל- Node לשרת כמויות מסיביות של חיבורי רשת בו זמנית בצורה יעילה.

שיתוף קוד בין הדפדפן והשרת

שימוש באותה שפה בשרת ובדפדפן היתה ההבטחה של הרבה שרתים מבוססי Javascript בעבר.
Jaxer למשל זכתה לחלק קטן מתשומת הלב, כנראה בגלל תזמון וגם כי היא דמתה יותר מידי ל ASP.

מסה קריטית ל Node.js

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

Joyent היא חברת הבית של Node. היא המעסיקה של ריאן דהאל. Joyent השיקה לא מכבר את no.de, שרות ארוח לאפליקציות Node. זה מאפשר ל - Node בסיס ממומן ומשאבים להמשך פיתוח ומהווה דובר לפרוייקט בעולם המסחרי.
שחקן אחר הוא HP. קצת אחרי ש- HP רכשה את Palm, מערכת ההפעלה webOS של Palm הוסיפה את Node. זה היה צעד חכם מצידה של HP והתקבל בצורה טובה מאוד על ידי קהילת webOS.
Node יכול להיות בכיס שלך, מסנכרן את אנשי הקשר שלך כשהוא מוצא נקודת גישה אלחוטית, הוא יכול להיות שרת peer to peer. והוא יכול להיות אחד מכל מיני דברים שעוד לא חשבנו עליהם.