https://numb86-tech.hatenablog.com/entry/2016/07/20/202744
`exports`変数の内容がエクスポート対象。
`x = require(ファイルパス、またはパッケージ名)`でexportsがxに代入される。
ファイルの中身を実行してexportsを返す、というのがrequire()の挙動。ただしrequire()は、同じファイルに対しては1度しか実行されない。
exports変数はmodule.exportsで参照される場合もあるがこれは同じものを指す。
// parts.js var value = '値'; var foo = 'foo'; exports.value = value; // index.js var parts = require('./parts.js'); console.log(parts.value); // 値 console.log(parts.foo); // undefined
javascript仕様に従ったimport/export構文も一応サポートされているが、拡張子をmjsにしなければならなかったり、許可オプションをつけないと警告が出たりするので、2021年現在においても実用的でない。