Menu
CoddyTech

מודולי CommonJS

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

חלק גדול מקוד Node שתקרא בחבילות npm ובמדריכים ישנים משתמש במערכת מודולים אחרת.

CommonJS מייצא באמצעות module.exports ומייבא באמצעות require. קובץ שמסתיים ב־.cjs הוא תמיד CommonJS, בלי קשר למה ששאר הפרויקט משתמש בו, ו־import של קובץ כזה נותן לך את האובייקט module.exports שלו כברירת מחדל:

// greet.cjs
function hello(name) {
    return 'Hello, ' + name;
}
module.exports = { hello };

// app.js
import greet from './greet.cjs';
console.log(greet.hello('Ada'));

exports מתחיל כאותו אובייקט כמו module.exports. exports.hello = hello מוסיף אליו; exports = { hello } מחליף את המשתנה, והקובץ המייבא מקבל אובייקט ריק.

challenge icon

אתגר

קל

קובץ ישן יותר, legacy/stats.cjs, כתוב בשיטת CommonJS, עם module.exports. השתמשו בו מתוך notes.js כדי להוסיף פקודת stats.

  1. ב־legacy/stats.cjs, השלימו את countWords(notes). היא מקבלת מערך של הערות ומחזירה את מספר המילים הכולל בהן, בספירה של כל ההערות. המילים מופרדות ברווחים. עבור שלוש ההערות ההתחלתיות, Buy milk, Call Ada ו־Water the plants, היא מחזירה 7. עבור מערך ריק היא מחזירה 0.
  2. ב־notes.js, ייבאו את הקובץ באמצעות import stats from './legacy/stats.cjs'. זהו קובץ CommonJS, לכן stats הוא אובייקט module.exports שלו, והפונקציה היא stats.countWords.
  3. הוסיפו פקודת stats לשרשרת, לפני ה־else האחרון. היא מדפיסה שורה אחת: מספר ההערות, ואחריו מספר המילים.
    3 notes, 7 words
    where והפקודות האחרות ממשיכות לפעול.

נסו זאת: הקלידו stats בתיבה אחרי $ node notes.js והקישו Enter. תראו 3 notes, 7 words. לאחר מכן הקלידו add Buy bread, ואז שוב stats: עדיין תראו 3 notes, 7 words, כי החנות שוכחת הערות חדשות כשהתוכנית מסתיימת.

נסו בעצמכם

// מודול ישן יותר, שנכתב בסגנון CommonJS.
function countWords(notes) {
    // החזר את מספר המילים הכולל בכל הפתקים יחד.
    return 0;
}

module.exports = { countWords };

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

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