在现实生活中,我在某个地方看到我们可以配置 Node-js 在全局范围内执行加载的模块,但我现在找不到如何做到这一点。
我为什么要问?
我有一些遗留文件定义了我想在服务器和客户端上使用的语言实用程序,但是其中许多实用程序被定义为全局范围函数。
例如,我有类似的功能closure(fClosure)
, module(fModule)
,以及更多以可读的明确方式简单地组织代码的工具,以及诸如$sb(arg,arg,arg)
,这是一个字符串生成器,等等。
现在这些实用程序定义在一个文件中,例如core.js
,并且该文件作为第一个依赖项加载到浏览器中,一切都很好。
但是,在根目录中要求此文件有助于它扩展的地方Array.prototype
,但其中定义的函数在其他模块中不可见。
(请避免讨论污染或与其他库冲突)
我知道这不符合 CommonJS 规范...但现在我只是尝试利用这些遗留代码,而不以 CommonJS 方式重新组织所有代码。
我还发现了 RequireJS 和它提出的漂亮的 AMD 模型,但它只回答了如何在为 Node.js 编写的浏览器代码上运行,反之亦然。
分配给全局变量将不起作用,因为这意味着我必须重写所有遗留库。
我正在寻找一种方法,使它们在全局范围内运行,并将它们声明的所有内容保留在那里,而不需要重写它们。
那么,有没有办法让节点需要一个文件并在全局范围内运行它?
您可以将某些内容分配给global
对象,对于 Node 来说就像window
用于浏览器,例如:
test.js
global.my_var = require('./my_module');
require('./display_my_var');
我的模块
module.exports = "this is a string";
显示_my_var.js
console.log(my_var); // this will work, as my_var is now global
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)