Subscribed unsubscribe Subscribe Subscribe

Nodeでモジュール間(app内)で変数を持ちまわる方法

Node.js jpのMLで話題になってました.

ちょうど似たことを考えていた (Sequelizeのインスタンスを使いまわそうと思って) ので追ってたらブログでまとめられてた.
expressでapp全体の設定値をroutesで使う(module間で変数を受け渡す)方法いろいろ

自分で考えてたのは, 上記ブログの3. クロージャを使う 方法だけでした.
色々あるんだなーと思いつつ, その後MLで言及された

// app.js
require './model'
module.exports.instanceA = new instanceA();

//model.js
require.main.exports.instanceA; // 使える

のやり方がいいなーと思ったのでとりあえずこれでやりながら, 他にも良い方法ないか考えようと思います.

Node.js v0.6.1 Manual & Documentation によると

ファイルがNodeによって直接実行される場合、module が require.main に設定されます。 これは、ファイルが直接実行されたかを決定できることを意味します。

ということらしいので node app.js とした場合 app.js がrequire.mainになるようです.