在现实的日子里,我在某处看到我们可以配置 node-js 以在全局范围内执行加载的模块,但我现在找不到如何做到这一点。
我为什么要问?
我有一些旧文件定义了我想在服务器和客户端上使用的语言实用程序,但是其中许多实用程序被定义为全局范围函数。例如,我有像closure(fClosure)
、module(fModule)
和更多的函数,它们可以简单地以可读的明确方式组织你的代码,以及像$sb(arg,arg,arg)
,它是一个字符串构建器等实用程序。
现在这些实用程序被定义在一个类似的文件中core.js
,并且这个文件作为第一个依赖加载到浏览器中,并且生活很好。
但是,在根目录中要求这个文件有助于它扩展的地方Array.prototype
,但它在其中定义的功能在其他模块中不可见。(请避免讨论污染或与其他库冲突)
我知道这不符合 CommonJS 规范……但现在我只是想利用这些遗留代码,而不以 CommonJS 方式重新组织所有代码。
我还发现了 RequireJS 和它提出的漂亮的 AMD 模型,但它只回答了如何在为 node.js 编写的浏览器代码上运行,反之亦然。
分配给全局变量将不起作用,因为这意味着我必须重写所有遗留库。我正在寻找一种方法让它们在全局范围内运行,并将它们声明的所有内容保留在那里,而无需重写它们。
那么,有没有办法让节点要求一个文件并在全局范围内运行它?