导入';它不是由Javascript中的模块显式导出的
在Javascript中,是否有任何方法可以导入(或要求)模块未从该模块导出的对象导入';它不是由Javascript中的模块显式导出的,javascript,Javascript,在Javascript中,是否有任何方法可以导入(或要求)模块未从该模块导出的对象 我意识到这可能是一种不好的做法,但我想知道这是否可能。我有Python的背景,所以我被这样的想法弄糊涂了:我可以导入一个模块,但不能用Javascript访问它的所有数据元素。不使用模块API。一个模块导出一个对象,任何导入该模块的代码都会被赋予一个对该对象的引用(JS意义上的“引用”) 第节介绍了导出,非常详细地说明了export关键字用于在模块的导入/导出表中包含一些局部变量。很简单,如果不指定导出,则变量是
我意识到这可能是一种不好的做法,但我想知道这是否可能。我有Python的背景,所以我被这样的想法弄糊涂了:我可以导入一个模块,但不能用Javascript访问它的所有数据元素。不使用模块API。一个模块导出一个对象,任何导入该模块的代码都会被赋予一个对该对象的引用(JS意义上的“引用”) 第节介绍了导出,非常详细地说明了
export
关键字用于在模块的导入/导出表中包含一些局部变量。很简单,如果不指定导出,则变量是模块作用域的局部变量
这与遗留IIFE模块的行为相匹配,遗留IIFE模块使用函数作用域隐藏其局部变量,然后导出要公开的对象
ES6模块,如:
export class Foo {
...
}
export const bar = new Foo();
传输后,将显示以下内容:
(function () {
function Foo() {
...
}
var bar = new Foo();
return {
Foo: Foo,
bar: bar
};
})();
关于JS模块的大多数文章(甚至)都没有提到未导出变量的情况
为了进行比较,声明模块有一个变量exports
和“模块可以在执行时添加其API”。CommonJS标准是迄今为止我发现的唯一一个仅通过关键字/对象导出的引用(来自模块上下文2.1):
模块必须使用“导出”对象作为导出的唯一方式
甚至python也有私有变量,不是吗?是的,但我的意思是,不是成员(比如属性或方法)。这些不是私有的吗?顺便说一句,你是在问ES6模块、CommonJS模块还是其他什么?这是一个一般性的问题,并不特定于一个模块系统(尽管我猜答案可能取决于系统)。至于Python,我不确定,我认为一切都可以通过内省来访问,但也许我们应该将其作为单独的Python问题发布;)