Node.js Can";要求()&引用;返回全局函数/变量?

Node.js Can";要求()&引用;返回全局函数/变量?,node.js,require,Node.js,Require,有没有办法将模块的导出函数放在全局命名空间中,而不是放在特定于模块的命名空间中 模块: 主文件: 这很好,但我想避免参考模块: const mod = require("./mod"); sayName("Pedro"); // My name is Pedro sayAge(28); // My age is 28 这可以做到吗?你应该可以做到 const {sayName, sayAge} = require('./mod'); 然后不带前缀地引用它们。您应该可以这样做 const {s

有没有办法将模块的导出函数放在全局命名空间中,而不是放在特定于模块的命名空间中

模块:

主文件:

这很好,但我想避免参考模块:

const mod = require("./mod");
sayName("Pedro"); // My name is Pedro
sayAge(28); // My age is 28

这可以做到吗?

你应该可以做到

const {sayName, sayAge} = require('./mod');

然后不带前缀地引用它们。

您应该可以这样做

const {sayName, sayAge} = require('./mod');
然后不带前缀地引用它们。

require()
不会像您要求的那样自动向全局命名空间添加内容。它只是没有做到这一点,也不是它的工作原理。它返回一个值,该值可以是单个值,也可以是包含多个值的对象或数组。您必须将返回值或返回值上的某些属性指定给某个对象,以便将其保存以供以后使用

您可以使用ES6语法在本地范围内为
require()
返回的对象的特定属性自动创建变量,如下所示:

const {sayName, sayAge} = require('./mod');

sayName("Pedro"); // My name is Pedro
sayAge(28); // My age is 28
请记住,这些也不是全局的。它们是模块级变量。这实际上只是一种语言快捷方式:

const temp = require('./mod');
const sayName = temp.sayName;
const sayAge = temp.sayAge;

sayName("Pedro"); // My name is Pedro
sayAge(28); // My age is 28
该语言快捷方式确实有用,但我想让您知道它实际上在做什么。

require()
不会像您所要求的那样自动向全局命名空间添加内容。它只是没有做到这一点,也不是它的工作原理。它返回一个值,该值可以是单个值,也可以是包含多个值的对象或数组。您必须将返回值或返回值上的某些属性指定给某个对象,以便将其保存以供以后使用

您可以使用ES6语法在本地范围内为
require()
返回的对象的特定属性自动创建变量,如下所示:

const {sayName, sayAge} = require('./mod');

sayName("Pedro"); // My name is Pedro
sayAge(28); // My age is 28
请记住,这些也不是全局的。它们是模块级变量。这实际上只是一种语言快捷方式:

const temp = require('./mod');
const sayName = temp.sayName;
const sayAge = temp.sayAge;

sayName("Pedro"); // My name is Pedro
sayAge(28); // My age is 28

这个语言快捷方式确实有用,但我想让你知道它实际上在做什么。

是的!!,您可以将它们添加到全局对象中。(这被认为是一种不好的做法,因为任何人都可以更改我们的职能)

因此,您可以直接调用它们,而无需指定任何局部变量:

require("./mod");

sayName("Pedro"); // My name is Pedro
sayAge(28); // My age is 28

是的!!,您可以将它们添加到全局对象中。(这被认为是一种不好的做法,因为任何人都可以更改我们的职能)

因此,您可以直接调用它们,而无需指定任何局部变量:

require("./mod");

sayName("Pedro"); // My name is Pedro
sayAge(28); // My age is 28