Menu
CoddyTech

משתני סביבה

חלק מהיחידה יסודות Node.js במסלול ה-Node.js של Coddy. שיעור 6 מתוך 33.

חלק מההגדרות שייכות למי שמריץ תוכנית, ולא למילים שהוא מקליד אחריה.

משתני סביבה הם מחרוזות בעלות שמות שהמעטפת מעבירה לכל תוכנית. Node מציב אותם ב-process.env. משתנה שלא הוגדר הוא undefined. a ?? b מחזיר את a, אלא אם a הוא undefined או null; במקרה כזה הוא מחזיר את b. לכן process.env.CITY ?? 'Lisbon' הוא 'Lisbon' כאשר CITY לא הוגדר.

// CITY=Oslo node weather.js
const city = process.env.CITY ?? 'Lisbon';
console.log(`Weather for ${city}`);

במחשב נייד אפשר להגדיר משתנה להרצה יחידה על ידי כתיבתו לפני הפקודה: CITY=Oslo node weather.js מדפיס Weather for Oslo, ואילו node weather.js בלבד מדפיס Lisbon. שמות תלויי רישיות. הטרמינל שלצד הקוד שלך לא מגדיר משתנים, ולכן הוא תמיד מציג את ברירת המחדל.

challenge icon

אתגר

קל

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

  1. ב־notes.js, בענף list, קרא את משתנה הסביבה NOTES_OWNER.
  2. לפני No notes yet, הדפס שורת כותרת: Notes for ואחריה שם הבעלים. כאשר NOTES_OWNER לא מוגדר, השתמש במילה you במקום בשם.

כאשר NOTES_OWNER מוגדר ל־Ada, הפקודה list מדפיסה:

Notes for Ada
No notes yet

כאשר NOTES_OWNER לא מוגדר, היא מדפיסה:

Notes for you
No notes yet

הפקודות האחרות אינן משתנות.

נסה זאת: הקלד list בתיבה שאחרי $ node notes.js והקש Enter. תראה Notes for you, ואז No notes yet. המסוף כאן אינו יכול להגדיר משתני סביבה, ולכן תמיד תראה you. כשתלחץ על „בדיקה”, הבדיקות יריצו גם את list כאשר NOTES_OWNER מוגדר ל־Ada ול־Grace, ויצפו לקבל Notes for Ada ו־Notes for Grace. במחשב נייד אפשר לנסות זאת באמצעות NOTES_OWNER=Ada node notes.js list.

נסו בעצמכם

// כלי ההערות שלך מתחיל כאן.
const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');

if (command === 'add') {
    console.log(`Adding: ${text}`);
} else if (command === 'list') {
    console.log('No notes yet');
} else {
    if (command) {
        console.error(`Unknown command: ${command}`);
    }
    console.error('Usage: node notes.js <command> [words]');
    process.exit(1);
}

כל השיעורים ביחידה יסודות Node.js

תרגלו בעצמכם: Express אונליין