PracticU

יצירת קבצי הגדרות - NodeJS config files

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › יצירת קבצי הגדרות - NodeJS config files
מילון מושגים:
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
פורט - מספר שמזהה שירות או תהליך מסוים בתוך מחשב, ומאפשר לכוון תעבורת רשת ליעד הנכון. למשל פורט 80 ל-HTTP.
משתנה סביבה - ערך בעל שם שמוגדר במערכת ההפעלה ומשמש תוכנות להגדרות, כמו נתיבים או מפתחות תצורה.
תהליך - מופע של תוכנה שרצה בזיכרון, עם הקוד, הנתונים והמשאבים שהוקצו לה על ידי מערכת ההפעלה.
טרמינל - חלון או תוכנה שמספקים ממשק שורת פקודה להקלדת פקודות למערכת ההפעלה.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.

יצירת קבצי הגדרות - NodeJS config files
בכל מערכת יש נתונים קונפיגורטיביים, כמו כתובת מסד הנתונים, שם המשתמש שמתחברים איתו או הפורט שבו האפליקציה רצה. המרצה מציג שלוש דרכים להגדיר אותם ב-Node.js.
דרך 1: משתני סביבה לריצה הנוכחית
הערכים נכנסים ל-process.env, ואפשר לקרוא אותם מהקוד, למשל process.env.port. בווינדוס מגדירים ערך בטרמינל לפני ההרצה, למשל set port=3000. הערך קיים רק בחלון הטרמינל הנוכחי ולא נשמר בין הרצות. ב-Mac משתמשים ב-export. כדי לקבוע ערך ברירת מחדל כותבים process.env.port || 3000.
דרך 2: קובץ nodemon.json
כשמריצים עם nodemon, אפשר לכתוב בקובץ nodemon.json אובייקט בשם env עם הערכים הנדרשים, וה-nodemon טוען אותם אוטומטית. בדוגמה מוגדרים פורט 3700, כתובת דואר לתמיכה ומספר טלפון. הערכים האלה קיימים רק כשמריצים דרך nodemon, ובגרסה שמוצגת אי אפשר להגדיר היררכיה של אובייקטים בתוך env.
דרך 3: קובץ config.json
קובץ JSON רגיל, למשל config/dev.json, נטען עם require. בקובץ יכול להיות אובייקט מקונן, כמו port ואובייקט support עם email ו-phone. אפשר לטעון אותו למשתנה, למשל const config = require('./config/dev.json'), ולקרוא config.support.email. המרצה מציג גם הכנסה של הקובץ ל-global.config, כך שהוא זמין בכל הקבצים בלי require נוסף.
פיתוח מול פרודקשן
אפשר לשמור כמה קבצים, למשל config/dev.json ו-config/prod.json, עם ערכים שונים. בזמן פיתוח טוענים את dev, ולפני העלאה לאוויר משנים את שם הקובץ בשורת ה-require ל-prod. המרצה מדגים מעבר של הפורט מ-3000 ל-5000.
לכל אחת משלוש הדרכים יש שימוש מתאים, לפי אופן ההרצה ושלב הפרויקט.
השיעור הבא בקורס: הסבר על מספור גרסאות

פרקי ההרצאה: יצירת קבצי הגדרות - NodeJS config files

  1. 00:00

    נתונים קונפיגורטיביים של מערכת

  2. 00:59

    קריאת משתני סביבה דרך process.env

  3. 02:33

    הגדרת משתנה סביבה בשורת הפקודה

  4. 04:06

    ערך ברירת מחדל לפורט עם OR

  5. 06:01

    הגדרת משתני סביבה בקובץ nodemon.json

  6. 08:45

    השפעת קובץ הקונפיגורציה בלי Nodemon

  7. 10:00

    קובץ config.json כפתרון לכל מצב

  8. 10:55

    היררכיה של אובייקטים בקובץ הקונפיגורציה

תמלול ההרצאה: יצירת קבצי הגדרות - NodeJS config files

הטקסט המלא של הדקות הראשונות בהרצאה «יצירת קבצי הגדרות - NodeJS config files» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:21

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

  3. 00:34

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

  4. 00:59

    אז כאן אנחנו צריכים להיזכר במשהו שראינו באחד הסרטונים הקודמים. בואו רגע נדפיס את process.environment והיה כמובן בתוך global אבל ראינו שאנחנו לא צריכים לרשום global אז פשוט אפשר process.environment וזה בעצם איזשהו אובייקט שמחזיק נתונים של הסביבה עצמה.

  5. 01:29

    בואו נריץ את המערכת ונראה שיש לנו פה אובייקט מאוד נרחב שיש בו נתוני סביבה אנחנו יכולים להכניס מידע לאובייקט הזה ולהשתמש איתו במהלך הריצה איך זה מתבצע אז בואו ניקח דוגמה של פורט אנחנו רוצים להריץ את המערכת על פורט מסוים אנחנו נראה את זה בהמשך כאשר אנחנו נבנה סרוויס ונחשוף

  6. 01:56

    אותו לעולם אנחנו צריכים להגדיר לסרוויס הזה לפחות בזמן הפיתוח על איזה פורט הוא רץ איזשהו מספר מסוים שבו התקשורת נכנסת לתוך המחשב. אז בואו ניקח כאן איזה שהוא משתנה "const port" ונכניס לתוכו את "process environment port" באותיות גדולות ונציג את ה-port.

  7. 02:26

    בואו נריץ את זה ונראה שאין דבר כזה, אין port באותיות גדולות ב-environment. אבל אם אנחנו רוצים רק עבור ההרצאה הזאת הנוכחית לבצע בעצם הגדרה של איזשהו פורט מסוים.

  8. 02:44

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

  9. 03:11

    בתוך environment הכניס את הכל 3000 ועכשיו בעריצות חוזרות ונשנות בפיתוח הנוכחי הפורט יהיה 3000. זאת אומרת אם אנחנו נעריץ את זה עכשיו node-up אנחנו נראה פורט 3000. עכשיו אם אני אריץ את זה שוב פעם אני עדיין אראה 3000 כלומר כל הרצה אני רואה שההגדרה הזאת נמצאת.

  10. 03:35

    בואו רגע נבצע סגירה close folder נבצע פתיחה מחדש של הפרויקט קוד עדיין הוא אותו קוד אבל מה שנעשה זה רק נריץ Node-up ונראה שהוא לא זוכר את ההגדרות מי בעצם פיתוחים קודמים או הרצה קודמת מבחינת Visual Studio.

  11. 04:02

    במצב כזה אנחנו יכולים לבוא לפה ולבצע איזשהו טריק שנקרא Shared Circuit בג'אווה סקריפט ולהגיד דבר כזה הנה הפורט שאני רוצה אבל אם הדבר הזה הוא לא קיים או במקרה הזה זה Undefined ובג'אווה סקריפט Undefined נחשב ערך שהוא פולסי כלומר פולס אז בגלל שיש לי פה אור אז המערכת תלך ותבדוק מה יש בצד השני

  12. 04:29

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

  13. 05:02

    מעכשיו הפורט הוא 3500 עבור הריצה הנוכחית. בואו נריץ את זה, נוד אפ, ונראה 3500, גם ריצות חוזרות ונשנות עבור ויז'ואל סטודיו כרגע שהוא פתוח, ו-3500. אז בעצם יש לנו פה הגדרה ראשונה של משתני סביבה שאנחנו מכניסים ל-Node.js על ידי ה-CommandLine.

  14. 05:24

    דרך אגב, ההגדרה של ה-set, הופה, בואו נחזור רגע לטרמינל, ההגדרה של ה-set משהו שווה, זה ב-Windows.

  15. 05:36

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

  16. 05:54

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

  17. 06:05

    שיטה ראשונה, אם אנחנו מריצים את הפרויקט על ידי NodeMon, אנחנו יכולים לצרף קובץ שנקרא nodemon.json. nodemon.json. ובקובץ הזה אנחנו יכולים להגדיר אובייקט, JSON כמובן, שנקרא Environment.

  18. 06:28

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

  19. 06:47

    ונגדיר שהפורט שלנו זה, בואו נגיד 3,700. אני רוצה להריץ את המערכת על פורט 3,700. בואו נגדיר כאן עוד ערכים, בואו נניח שיש לנו קונפיגורציה של ספורט אימייל. מה אימייל ספורט שלנו, שיכול להשתנות עם הזמן, ולכן אנחנו רוצים להגדיר אותו בקובץ קונפיגורציה.

  20. 07:10

    [email protected] או mycompany.com, לא משנה. ובואו נגדיר עוד אחד. בואו נגדיר שיש לנו support phone וה-support phone שלנו זה 97231234567, את זה אפשר להוריד.

  21. 07:38

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

  22. 08:15

    אנחנו יכולים פשוט להציג process environment port בצורה כזאת. ונציג גם process environment support, הופה, support e-mail, ונציג גם את support home.

  23. 08:42

    עכשיו, בואו נריץ את זה רגע בלי נודמון, Node App, ונראה שהוא, וואלה, לא תופס. יש לנו רק את ה-3,500 שהגדרנו מקודם. אני רואה אפילו שהוא לא מעניין אותו אם זה אותיות קטנות או אותיות גדולות, זה מעניין.

  24. 09:01

    בסדר, בואו רגע ניפטר מההגדרות הקודמות על ידי Close Folder ו-Open Folder. נעשה איזו טעינה חוזרת לכל המערכת, Node App, ונראה שאם אנחנו מריצים את זה ללא נודמון, אין שום משמעות לקובץ הזה.

  25. 09:24

    זה רק במצב שאתם יודעים שוואלה, כל הזמן אתם מריצים את המערכת עם נודמון. בואו נריץ אותו עם נורדמונד. נורדמונד, גו, והנה אנחנו רואים שהוא טען את המידע ישירות מקובץ ההגדרות של נורדמונד.

  26. 09:40

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

  27. 09:58

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

  28. 10:19

    כאן אנחנו הולכים לצרף קובץ שנקרא config.json. יופי. עכשיו בתוך קובץ ה-config.json נכתוב פחות או יותר את מה שהיה לנו בתוך נודמון.

  29. 10:36

    ניקח את זה, נודמון, ג'ייסון הכוונה, להנדביק, אבל אין משמעות ל-Environment, הקובץ הזה לא נכנס ל-Environment ולמעשה זה סתם שם שהמצאתי.

  30. 10:47

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

  31. 11:05

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

  32. 11:21

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

  33. 11:35

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

  34. 11:56

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

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: הסבר על Nodemon

ההרצאה הבאה: הסבר על מספור גרסאות

הרצאות קשורות מקורסים אחרים

  • הגדרות של IIS - קובץ web.config
  • יצירת קבצי JAR
  • יצירת מחלקה עם כל ההגדרות - Config Class - חלק 1
  • קבצים - Files - חלק 1

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React