Menu
CoddyTech

CommonJSモジュール

CoddyのNode.jsジャーニー「Node.jsの基礎」セクションの一部。レッスン 9/24。

npm パッケージや古いチュートリアルで読む Node のコードの多くは、別のモジュールシステムを使っています。

CommonJS では、module.exports でエクスポートし、require でインポートします。Node は、.cjs で終わるファイルでは引き続きこの方式で実行し、そのようなファイルを 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 の countWords(notes) を完成させます。ノート全体に含まれる単語数を数えます。
  • import stats from './legacy/stats.cjs' を使って notes.js にインポートします。
  • stats コマンドを実行すると、3 notes, 7 words と表示されます。

node notes.js stats を実行します。次に、ノートを add してから、もう一度 stats を実行します。まだ何も保存されていないため、3 のままです。

自分で試してみよう

// CommonJS方式で書かれた古いモジュール。
function countWords(notes) {
    // すべてのnotesに含まれる単語の合計数を返す。
    return 0;
}

module.exports = { countWords };

Node.jsの基礎のすべてのレッスン