クラス コンストラクター パターンに従って 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.jsmy_class のインスタンスはクロージャ コンテキストを失い、のグローバルにアクセスできなくなるため、これは機能しません。クラスを別のファイルに移動し、依存関係をそのコンストラクター (例: ) に手動で注入します
my_class(world,socket)。問題は、コードがはるかに複雑になり、「my_instance.world」がソースにポップするなどの奇妙なセマンティクスになることです。「world」は のプロパティではないため、これはナンセンスですmy_class。クラスを別のファイルに移動し、
my_class = eval(fs.readFileSync(())代わりにrequire. my_class がmain.jsのクロージャ コンテキストを取得するため、これは問題なく機能します。これは私が使用しているソリューションですが、ハックのようです。
そのような node.js プロジェクトをモジュール化する正しい方法はどれですか?