我正在按照类构造函数模式创建一个 node.js 项目:
function my_class(x,y){
this.x = x;
this.y = y;
}
项目的起点是main.js
文件。项目的任何类都必须能够访问定义在main.js
. 我找到了 4 个选项:
我在里面定义我的类
main.js
。他们将可以访问main.js
's 的全局变量以使其关闭,但main.js
会变得臃肿。my_class.js
我将类移动到另一个文件,例如require()
它。这不起作用,因为 my_class 的实例将丢失闭包上下文并且不再能够访问main.js
的全局变量。我将类移动到另一个文件并手动将依赖项注入它的构造函数(例如:)
my_class(world,socket)
。问题是,代码变得更加复杂和奇怪的语义,例如源上弹出“my_instance.world”,这是无稽之谈,因为“world”不是my_class
.我将类移动到另一个文件并要求它使用
my_class = eval(fs.readFileSync(())
而不是require
. 这很好用,因为 my_class 获得main.js
了闭包上下文,并且是我正在使用的解决方案,但看起来很老套。
模块化这样的node.js项目的正确方法是什么?