
process.env, ואפשר לקרוא אותם מהקוד, למשל process.env.port. בווינדוס מגדירים ערך בטרמינל לפני ההרצה, למשל set port=3000. הערך קיים רק בחלון הטרמינל הנוכחי ולא נשמר בין הרצות. ב-Mac משתמשים ב-export. כדי לקבוע ערך ברירת מחדל כותבים process.env.port || 3000.nodemon.json אובייקט בשם env עם הערכים הנדרשים, וה-nodemon טוען אותם אוטומטית. בדוגמה מוגדרים פורט 3700, כתובת דואר לתמיכה ומספר טלפון. הערכים האלה קיימים רק כשמריצים דרך nodemon, ובגרסה שמוצגת אי אפשר להגדיר היררכיה של אובייקטים בתוך env.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» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בכל מערכת שאנחנו בונים קיימים לנו כל מיני נתונים קונפיגורטיביים שאנחנו רוצים להגדיר במערכת עצמה. זה לא משנה מהי שפת התכנות או מה הטכנולוגיית הפיתוח שאנחנו לוקחים, כנראה שיהיה לנו כל מיני מאפיינים שנרצה להגדיר שקשורים לסביבה או למערכת.
לדוגמה, הקישור למסד הנתונים, באיזה יוזרניים אנחנו רוצים להיכנס למסד הנתונים, אולי באיזה פורט אנחנו רוצים להריץ את האפליקציה שלנו.
אז מה שאנחנו הולכים לראות עכשיו זה איך אנחנו יכולים ב-Node.js להגדיר את הנתונים הקונפיגורטיביים האלה בכמה שיטות. שיטה ראשונה זה נתונים זמניים שאנחנו רוצים, לא בדיוק זמנים אבל נתונים שאנחנו רוצים להגדיר אותם ברגע שאנחנו מריצים את האפליקציה ואנחנו רוצים אותם ספציפית להרצה הנוכחית.
אז כאן אנחנו צריכים להיזכר במשהו שראינו באחד הסרטונים הקודמים. בואו רגע נדפיס את process.environment והיה כמובן בתוך global אבל ראינו שאנחנו לא צריכים לרשום global אז פשוט אפשר process.environment וזה בעצם איזשהו אובייקט שמחזיק נתונים של הסביבה עצמה.
בואו נריץ את המערכת ונראה שיש לנו פה אובייקט מאוד נרחב שיש בו נתוני סביבה אנחנו יכולים להכניס מידע לאובייקט הזה ולהשתמש איתו במהלך הריצה איך זה מתבצע אז בואו ניקח דוגמה של פורט אנחנו רוצים להריץ את המערכת על פורט מסוים אנחנו נראה את זה בהמשך כאשר אנחנו נבנה סרוויס ונחשוף
אותו לעולם אנחנו צריכים להגדיר לסרוויס הזה לפחות בזמן הפיתוח על איזה פורט הוא רץ איזשהו מספר מסוים שבו התקשורת נכנסת לתוך המחשב. אז בואו ניקח כאן איזה שהוא משתנה "const port" ונכניס לתוכו את "process environment port" באותיות גדולות ונציג את ה-port.
בואו נריץ את זה ונראה שאין דבר כזה, אין port באותיות גדולות ב-environment. אבל אם אנחנו רוצים רק עבור ההרצאה הזאת הנוכחית לבצע בעצם הגדרה של איזשהו פורט מסוים.
אנחנו יכולים בטרמינל לכתוב את הפקודה הבאה, סט ואז מה שם המשתנה שאני רוצה לשתול בתוך אובייקט האנביורמנט, במקרה שלנו פורט, שווה ומה הערך שלו. לדוגמה אני רוצה להריץ את האפליקציה הזאת על פורט 3000. אחרי שעשיתי את זה כל מה שהוא עשה הוא פשוט שתל את המשתנה פורט
בתוך environment הכניס את הכל 3000 ועכשיו בעריצות חוזרות ונשנות בפיתוח הנוכחי הפורט יהיה 3000. זאת אומרת אם אנחנו נעריץ את זה עכשיו node-up אנחנו נראה פורט 3000. עכשיו אם אני אריץ את זה שוב פעם אני עדיין אראה 3000 כלומר כל הרצה אני רואה שההגדרה הזאת נמצאת.
בואו רגע נבצע סגירה close folder נבצע פתיחה מחדש של הפרויקט קוד עדיין הוא אותו קוד אבל מה שנעשה זה רק נריץ Node-up ונראה שהוא לא זוכר את ההגדרות מי בעצם פיתוחים קודמים או הרצה קודמת מבחינת Visual Studio.
במצב כזה אנחנו יכולים לבוא לפה ולבצע איזשהו טריק שנקרא Shared Circuit בג'אווה סקריפט ולהגיד דבר כזה הנה הפורט שאני רוצה אבל אם הדבר הזה הוא לא קיים או במקרה הזה זה Undefined ובג'אווה סקריפט Undefined נחשב ערך שהוא פולסי כלומר פולס אז בגלל שיש לי פה אור אז המערכת תלך ותבדוק מה יש בצד השני
ופה נכניס איזה שהוא פורט דיפולטי שאנחנו רוצים לדוגמה פורט דיפולטי זה שלושת אלפים אז אנחנו יכולים לבצע עכשיו את הקטע קוד הבא בואו נבצע סט קודם כל בואו נריץ את זה בלי כלום נוד אפ ונראה שהפורט הוא שלושת אלפים מפני שזה היה אנדיפיינד ואז המערכת ראתה שזה אנדיפיינד והביאה לי שלושת אלפים אם עכשיו אני אגדיר סט פורט שווה 3500.
מעכשיו הפורט הוא 3500 עבור הריצה הנוכחית. בואו נריץ את זה, נוד אפ, ונראה 3500, גם ריצות חוזרות ונשנות עבור ויז'ואל סטודיו כרגע שהוא פתוח, ו-3500. אז בעצם יש לנו פה הגדרה ראשונה של משתני סביבה שאנחנו מכניסים ל-Node.js על ידי ה-CommandLine.
דרך אגב, ההגדרה של ה-set, הופה, בואו נחזור רגע לטרמינל, ההגדרה של ה-set משהו שווה, זה ב-Windows.
אם אנחנו נמצאים ב-Mac, אז אנחנו צריכים לרשום export ומה שאנחנו רוצים. טוב, אז יש לנו כרגע אפשרות ראשונה להגדיר הגדרות, אבל ההגדרות האלה, שוב, הן רק לריצות נוכחיות.
עכשיו, אם אני רוצה לבצע איזושהי הגדרה שהיא בעצם קונפיגרטיבית עבור כל המערכת, איך אנחנו עושים את זה. אז כאן יש כמה שיטות.
שיטה ראשונה, אם אנחנו מריצים את הפרויקט על ידי NodeMon, אנחנו יכולים לצרף קובץ שנקרא nodemon.json. nodemon.json. ובקובץ הזה אנחנו יכולים להגדיר אובייקט, JSON כמובן, שנקרא Environment.
בואו נגדיר בתוכו את הערכים שאנחנו רוצים. בואו נניח שאנחנו רוצים להגדיר, בואו אפילו נגדיר פה את הפורט. כאן בקבצי ג'ייסון אפשר להגדיר אותם גם באותיות קטנות, אין פה איזושהי מוסכמה ספציפית.
ונגדיר שהפורט שלנו זה, בואו נגיד 3,700. אני רוצה להריץ את המערכת על פורט 3,700. בואו נגדיר כאן עוד ערכים, בואו נניח שיש לנו קונפיגורציה של ספורט אימייל. מה אימייל ספורט שלנו, שיכול להשתנות עם הזמן, ולכן אנחנו רוצים להגדיר אותו בקובץ קונפיגורציה.
[email protected] או mycompany.com, לא משנה. ובואו נגדיר עוד אחד. בואו נגדיר שיש לנו support phone וה-support phone שלנו זה 97231234567, את זה אפשר להוריד.
והנה יש לנו עכשיו קובץ קונפיגורציה מיוחד שנודמון אוטומטית טוען אותו ברגע שהוא רץ. אז אם אנחנו עכשיו רוצים להשתמש עם המידע הזה, אז אנחנו צריכים לגשת בחזרה לאפליקציה. בואו רגע נשים את זה פה בצד, נחזור לאפליקציה שלנו, נציג גם את זה כדי לראות מה בעצם, מה יש לנו מבחינת פורט, והאמת שבגלל שיש לנו קובץ קונפיגורציה,
אנחנו יכולים פשוט להציג process environment port בצורה כזאת. ונציג גם process environment support, הופה, support e-mail, ונציג גם את support home.
עכשיו, בואו נריץ את זה רגע בלי נודמון, Node App, ונראה שהוא, וואלה, לא תופס. יש לנו רק את ה-3,500 שהגדרנו מקודם. אני רואה אפילו שהוא לא מעניין אותו אם זה אותיות קטנות או אותיות גדולות, זה מעניין.
בסדר, בואו רגע ניפטר מההגדרות הקודמות על ידי Close Folder ו-Open Folder. נעשה איזו טעינה חוזרת לכל המערכת, Node App, ונראה שאם אנחנו מריצים את זה ללא נודמון, אין שום משמעות לקובץ הזה.
זה רק במצב שאתם יודעים שוואלה, כל הזמן אתם מריצים את המערכת עם נודמון. בואו נריץ אותו עם נורדמונד. נורדמונד, גו, והנה אנחנו רואים שהוא טען את המידע ישירות מקובץ ההגדרות של נורדמונד.
אבל כמו שראינו לא תמיד אנחנו רוצים להריץ את זה עם נורדמונד ולפעמים גם אנחנו רוצים להריץ פעם עם ופעם בלי. מתי אנחנו רוצים לא להתייחס לנורדמונד? אם יש לנו המון המון שינויים קטנים או לפעמים אני סתם מתעד, אתם רואים, רק אם אני מתעד את המערכת כבר נורדמונד מתחיל את עצמו מחדש.
לפעמים זה לא משהו שכל כך מתאים לי. אז בואו נעצור רגע את נודמון, ואנחנו רוצים בעצם לראות טכניקה אחרת לקובץ קונפיגורציה שהוא מתאים לכל מצב, בין אם אני משתמש בנודמון ובין אם אני לא משתמש בנודמון, קובץ הקונפיגורציה הזה יכול לעזור לנו.
כאן אנחנו הולכים לצרף קובץ שנקרא config.json. יופי. עכשיו בתוך קובץ ה-config.json נכתוב פחות או יותר את מה שהיה לנו בתוך נודמון.
ניקח את זה, נודמון, ג'ייסון הכוונה, להנדביק, אבל אין משמעות ל-Environment, הקובץ הזה לא נכנס ל-Environment ולמעשה זה סתם שם שהמצאתי.
נהוג שיהיה קונפיג, אבל אפשר כל שם. ובואו נעשה אותו טיפה שונה ממה שכתוב פה. ניקח את הפורט ונשים אותו כאן, ובוא נניח שאנחנו רוצים שהנתונים האלה יהיו באובייקט נפרד שנקרא support.
זה אנחנו, כלומר היררכיה כזאת של ג'ייסון לא היינו יכולים לעשות בנודמונד, לפחות לא בגרסה הזאת. אז כאן בעצם אנחנו רואים שאנחנו יכולים להכניס כל מיני אובייקטים או היררכיה כזאת, ועכשיו מה יש לנו בתוך קובץ הקונפיגורציה?
יש לנו אובייקט אחד, הנה אנחנו רואים אותו כאן, ויש בתוכו פורט, ואז יש בתוכו עוד אובייקט שנקרא ספורט, אנחנו רואים אותו כאן, ובתוכו יש שני מאפיינים, ספורט אימייל וספורט פורן. איך אנחנו משתמשים בזה?
בואו נשים את זה פה בצד, נחזור ל-up, למה זה נסגר לי? אה, נכון, זה אני רוצה פה, ונשים את כל אלה בהערה, כי אנחנו לא משתמשים עכשיו בטכניקה הקודמת.
ומה שאנחנו רוצים לעשות זה להציג את המידע שנמצא בתוך קובץ הקונפיגורציה, אבל זה סתם שם שהמצאנו. מגרסה מסוימת של Node.js יכלנו לפתוח משתנה, לקרוא לו בכל שם שאנחנו רוצים xyz אני לא