楽しいだけで十分です

Node.jsのmoduleの読み込みについて調べたこと

なんとなくの雰囲気で使っていたのですが、改めて調べてみたのでメモです。

exportsmodule.exportsの関係

  • 初期状態では、exportsmodule.exportsを参照しており、両者は同じものを指している (exports = module.exports = {})
  • exports === module.exportsの関係が途切れるケース

    • module.exportsに代入した場合
    • exportsに代入した場合 (e.g. exports = 'foo')
    • ただし、exportsのプロパティに代入した場合は関係は途切れない (e.g. exports.foo = 'foo')
  • require()によって最終的に評価されるのは、module.exports

    • そのため、常にmodule.exportsを使うようにすれば混乱が少ない

require()の挙動

  • ファイルの中身を実行して、module.exportsを返す
  • 同一ファイルに対しては一度しか実行しない
  • 引数にディレクトリを渡すと、そのディレクトリのindex.jsを実行する

    • そのため、index.jsをエントリポイントにして、複数ファイルを簡単に読み込める

参考

yinm

WRITTEN BY yinm

I'm a software engineer.