クラス コンストラクター パターンに従って node.js プロジェクトを作成しています。
function my_class(x,y){
this.x = x;
this.y = y;
}
プロジェクトの出発点はmain.js
ファイルです。プロジェクトのどのクラスも、 で定義されているグローバル オブジェクト (「ワールド」や「ソケット」など) にアクセスできる必要がありますmain.js
。私は4つのオプションを見つけました:
内でクラスを定義します
main.js
。彼らはmain.js
の閉鎖のために のグローバルにアクセスできますが、main.js
肥大化します。my_class.js
クラスをand itなどの別のファイルに移動しますrequire()
。main.js
my_class のインスタンスはクロージャ コンテキストを失い、のグローバルにアクセスできなくなるため、これは機能しません。クラスを別のファイルに移動し、依存関係をそのコンストラクター (例: ) に手動で注入します
my_class(world,socket)
。問題は、コードがはるかに複雑になり、「my_instance.world」がソースにポップするなどの奇妙なセマンティクスになることです。「world」は のプロパティではないため、これはナンセンスですmy_class
。クラスを別のファイルに移動し、
my_class = eval(fs.readFileSync(())
代わりにrequire
. my_class がmain.js
のクロージャ コンテキストを取得するため、これは問題なく機能します。これは私が使用しているソリューションですが、ハックのようです。
そのような node.js プロジェクトをモジュール化する正しい方法はどれですか?