מה זה בעצם Node.js?

Node.js היא סביבת זמן ריצה של JavaScript. נשמע מצוין, אבל מה זה אומר? כיצד זה פועל?

סביבת זמן הריצה של Node.js כוללת את כל מה שאתה צריך כדי להפעיל תוכנית שכתובה ב- JavaScript.

Node.js התרחש כאשר המפתחים המקוריים של JavaScript הרחיבו אותו ממשהו שתוכלו להריץ רק בדפדפן למשהו שתוכלו להריץ במחשב שלכם כיישום עצמאי.

עכשיו אתה יכול לעשות הרבה יותר עם JavaScript מאשר רק להפוך אתרים לאינטראקטיביים.

ל- JavaScript יש כעת את היכולת לעשות דברים ששפות סקריפט אחרות כמו Python יכולות לעשות.

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

מדוע Node.js?

להלן הגדרה רשמית כפי שניתן באתר הרשמי של Node.js:

Node.js® הוא זמן ריצה של JavaScript שנבנה על מנוע ה- JavaScript V8 של Chrome.

Node.js משתמש במודל קלט / פלט מונחה אירועים, שאינו חוסם, ההופך אותו לקל משקל ויעיל.

המערכת האקולוגית של Node.js, npm, היא המערכת האקולוגית הגדולה ביותר של ספריות קוד פתוח בעולם.

כבר דנו בשורה הראשונה של הגדרה זו: "Node.js® הוא זמן ריצה של JavaScript שנבנה על מנוע ה- JavaScript V8 של Chrome." עכשיו בואו נבין את שתי השורות האחרות כדי שנוכל לגלות מדוע Node.js כה פופולרי.

קלט / פלט מתייחס לקלט / פלט. זה יכול להיות כל דבר החל מקריאה / כתיבה של קבצים מקומיים ועד הגשת בקשת HTTP ל- API.

קלט / פלט לוקח זמן ומכאן חוסם פונקציות אחרות.

שקול תרחיש בו אנו מבקשים מסד נתונים אחורי לפרטי המשתמש 1 והמשתמש 2 ולאחר מכן מודפס אותם על המסך / המסוף. התגובה לבקשה זו אורכת זמן, אך שתי בקשות נתוני המשתמש יכולות להתבצע באופן עצמאי ובו זמנית.

חסימת קלט / פלט

בשיטת החסימה, בקשת הנתונים של user2 אינה נפתחת עד שהנתונים של user1 מודפסים למסך.

אם זה היה שרת אינטרנט, היינו צריכים להתחיל שרשור חדש לכל משתמש חדש. אבל JavaScript הוא בעל הברגה אחת (לא ממש, אבל יש לו לולאת אירועים עם הברגה אחת, שעליה נדבר מעט אחר כך). אז זה יהפוך את JavaScript לא מאוד מתאים למשימות מרובות הליכי משנה.

שם נכנס החלק הלא חוסם.

קלט / פלט ללא חסימה

מצד שני, באמצעות בקשה שאינה חוסמת, אתה יכול ליזום בקשת נתונים למשתמש 2 מבלי לחכות לתגובה לבקשה למשתמש 1. אתה יכול ליזום את שתי הבקשות במקביל.

קלט / פלט לא חוסם זה מבטל את הצורך בהשחלה מרובה שכן השרת יכול לטפל בבקשות מרובות בו זמנית.

לולאת האירועים של JavaScript

אם יש לך 26 דקות, צפה בהסבר הווידיאו המצוין הזה של לולאת האירועים:

אחרת, הנה הסבר מהיר שלב אחר שלב כיצד פועל JavaScript Loop Event.

  1. לחץ main()על ערימת השיחה.
  2. לחץ console.log()על ערימת השיחה. זה פועל מיד ונקפץ.
  3. דחף setTimeout(2000)אל הערימה. setTimeout(2000)הוא API של צומת. כשאנחנו קוראים לזה, אנחנו רושמים את הזוג האירוע-החזרה. האירוע יחכה 2000 אלפיות השנייה, ואז ההתקשרות היא הפונקציה.
  4. לאחר רישומו בממשקי ה- API, setTimeout(2000)נקפץ ממחסנית השיחות.
  5. עכשיו השני setTimeout(0)נרשם באותה צורה. כעת יש לנו שני ממשקי API של Node הממתינים לביצוע.
  6. לאחר המתנה של 0 שניות, setTimeout(0)מועבר לתור ההתקשרות, ואותו הדבר קורה גם עם setTimeout(2000).
  7. בתור להתקשרות חוזרת, הפונקציות מחכות שערימת השיחות תהיה ריקה, מכיוון שרק הצהרה אחת יכולה לבצע בכל פעם. זה מטופל על ידי לולאת האירוע.
  8. האחרון console.log()פועל, main()והקופצים צצו ממחסנית השיחות.
  9. לולאת האירוע רואה כי מחסנית השיחות ריקה ותור ההתקשרות אינו ריק. אז זה מעביר את הקולות החוזרים (בסדר ראשון בהתחלה) לערמת השיחות לביצוע.

npm

אלה ספריות שנבנו על ידי הקהילה המדהימה שתפתור את רוב הבעיות הגנריות שלך. ל- npm (מנהל חבילות הצמתים) יש חבילות בהן תוכלו להשתמש באפליקציות שלכם כדי להפוך את הפיתוח שלכם למהיר ויעיל יותר.

לִדרוֹשׁ

דרישה עושה שלושה דברים:

  • הוא טוען מודולים שמגיעים יחד עם Node.js כמו מערכת קבצים ו- HTTP מממשק ה- API של Node.js.
  • הוא טוען ספריות צד שלישי כמו Express ו- Mongoose שמתקינים מ- npm.
  • זה מאפשר לך לדרוש קבצים משלך ולבצע מודולציה של הפרויקט.

דרישה היא פונקציה והיא מקבלת פרמטר "נתיב" ומחזירה module.exports.

מודולי צומת

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

אתה יכול לכתוב מודולים משלך ולהשתמש בהם ביישומים שונים. ל- Node.js קבוצה של מודולים מובנים שתוכלו להשתמש בהם ללא כל התקנה נוספת.

V8 מטען טורבו JavaScript על ידי מינוף C ++

V8 הוא מנוע זמן ריצה בקוד פתוח שנכתב ב- C ++.

JavaScript -> V8 (C ++) -> קוד מכונה

V8 מיישם סקריפט בשם ECMAScript כמפורט ב- ECMA-262. ECMAScript נוצר על ידי Ecma International כדי לתקנן JavaScript.

V8 יכול להריץ עצמאי או להיות מוטמע בכל יישום C ++. יש לו ווים המאפשרים לך לכתוב קוד C + + משלך שתוכל להנגיש ל- JavaScript.

זה בעצם מאפשר לך להוסיף תכונות ל- JavaScript על ידי הטמעת V8 בקוד C ++ שלך, כך שקוד C ++ שלך מבין יותר ממה שמוגדר אחרת בתקן ECMAScript.

עריכה: כפי שמובא לתשומת ליבי גרג בולמאש, ישנם מנועי זמן ריצה שונים של JavaScript מלבד V8 של Chrome כמו SpiderMonkey של Mozilla, Chakra של Microsoft וכו '. פרטים על אותו ניתן למצוא בעמוד זה.

אירועים

משהו שקרה באפליקציה שלנו שנוכל להגיב אליו. ישנם שני סוגים של אירועים ב- Node.

  • אירועי מערכת: ליבת C ++ מספרייה בשם libuv. (לדוגמא, סיימת לקרוא קובץ).
  • אירועים מותאמים אישית: ליבת JavaScript.

כותב Hello World ב- Node.js

אנחנו חייבים לעשות את זה, לא?

הכינו קובץ app.js והוסיפו אליו את הדברים הבאים.

console.log("Hello World!");

פתח את מסוף הצומת שלך, שנה את הספרייה לתיקיה בה נשמר הקובץ והפעל אותו node app.js.

Bam - בדיוק כתבת את Hello World ב- Node.js.

עקוב אחרי @ Priyesh_p18

יש המון משאבים שבהם תוכל להשתמש כדי ללמוד עוד על Node.js, כולל freeCodeCamp.org.