node.js - 配置节点将函数加载到全局范围?

Rad*_*own 3 scope global configure global-scope node.js

在更实际的日子里,我看到某个地方我们可以配置node-js来执行全局范围内的加载模块,我现在找不到如何做到这一点.

我为什么这么问?

我有一些遗留文件定义了我想在服务器和客户端上使用的语言实用程序,但是许多这些实用程序被定义为全局范围函数.例如,我有这样的功能closure(fClosure),module(fModule)以及更多,简单地组织以可读明确的方式你的代码和工具一样$sb(arg,arg,arg),这是一个字符串生成器,等等.

现在这些实用程序在文件中定义core.js,并且此文件作为第一个依赖项加载到浏览器中,并且生活很好.

但是,在根目录中要求此文件有助于扩展它的位置Array.prototype,但在其中定义的函数在其他模块中不可见.(请避免讨论污染或与其他库发生冲突)

我知道这不符合CommonJS规范......但现在我只是试图利用这些遗留代码,而无需以CommonJS方式重新组织所有代码.

我也发现了RequireJS和它提出的漂亮的AMD模型,但它只回答了如何运行为node.js编写的浏览器代码,而不是反之亦然.

分配给全局变量将不起作用,因为这意味着我必须重写所有遗留库.我正在寻找一种方法让它们在全局范围内运行,并保留它们在那里声明的所有内容,而不重写它们.

那么,有没有办法要求节点需要一个文件并在全局范围内运行它?

ale*_*lex 10

您可以为global对象分配一些东西,对于Node来说就像window浏览器一样,例如:

test.js

global.my_var = require('./my_module');

require('./display_my_var');
Run Code Online (Sandbox Code Playgroud)

my_module

module.exports = "this is a string";
Run Code Online (Sandbox Code Playgroud)

display_my_var.js

console.log(my_var); // this will work, as my_var is now global
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是不可能的。还应避免分配全局变量。您应该做的最好的事情就是在函数的参数中包含所需的内容。 (2认同)