我正在使用 Node.js 开发一个项目,服务器端代码变得足够大,我想将其拆分为多个文件。看来这已经在客户端完成多年了,开发是通过插入一个来完成的script
每个文件的标签并且仅用于分发,类似于“Make”,用于将所有内容放在一起。我意识到连接所有服务器端代码是没有意义的,所以我不会问如何做到这一点。我能找到的最接近的东西是require()
,但是它的行为不太像script
在浏览器中,所需的文件不共享公共名称空间。
查看一些较旧的 Node.js 项目,例如Shooter https://github.com/BonsaiDen/NodeGame-Shooter/tree/master/server,看来情况曾经不是这样,或者我在代码中遗漏了一些非常简单的东西。我所需的文件无法在编译时或运行时访问全局调用命名空间。是否有任何简单的方法可以解决这个问题,或者我们是否被迫使所有必需的 JS 文件完全独立于调用范围?
您不需要公共名称空间,因为全局变量是邪恶的。在节点中我们定义模块
// someThings.js
(function() {
var someThings = ...;
...
module.exports.getSomeThings = function() {
return someThings();
}
}());
// main.js
var things = require("someThings");
...
doSomething(things.getSomeThings());
您定义一个模块,然后通过写入来公开您的模块的公共 APIexports
.
处理这个问题的最佳方法是依赖注入。你的模块暴露了一个init
函数,并将依赖项的对象哈希传递到模块中。
如果您确实坚持访问全局范围,那么您可以通过global
。每个文件都可以写入和读取global
目的。同样,您不想使用全局变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)