מודולי 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 } מחליף את המשתנה, והקובץ המייבא מקבל אובייקט ריק.
אתגר
קלקובץ ישן יותר, legacy/stats.cjs, כתוב בשיטת CommonJS, עם module.exports. השתמשו בו מתוך notes.js כדי להוסיף פקודת stats.
- ב־
legacy/stats.cjs, השלימו אתcountWords(notes). היא מקבלת מערך של הערות ומחזירה את מספר המילים הכולל בהן, בספירה של כל ההערות. המילים מופרדות ברווחים. עבור שלוש ההערות ההתחלתיות,Buy milk,Call Adaו־Water the plants, היא מחזירה7. עבור מערך ריק היא מחזירה0. - ב־
notes.js, ייבאו את הקובץ באמצעותimport stats from './legacy/stats.cjs'. זהו קובץ CommonJS, לכןstatsהוא אובייקטmodule.exportsשלו, והפונקציה היאstats.countWords. - הוסיפו פקודת
statsלשרשרת, לפני ה־elseהאחרון. היא מדפיסה שורה אחת: מספר ההערות, ואחריו מספר המילים.3 notes, 7 wordswhereוהפקודות האחרות ממשיכות לפעול.
נסו זאת: הקלידו 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
1הרצת JavaScript ב-Node
שלום, Nodeקריאת הפקודהארגומנטים של שורת הפקודהפקודותתרגלו בעצמכם: Express אונליין