Javascript js:如何从外部访问内部定义的类(可访问性问题)
这个问题困扰了我一段时间。 我试图从外部调用一个类require(可访问性问题),我的代码如下所示Javascript js:如何从外部访问内部定义的类(可访问性问题),javascript,class,requirejs,require,Javascript,Class,Requirejs,Require,这个问题困扰了我一段时间。 我试图从外部调用一个类require(可访问性问题),我的代码如下所示 require(['foo'], (foo) => { class Bar { hello() { return "hello"; } } }); bar = new Bar(); //uncaught ReferenceError: Chart is not de
require(['foo'],
(foo) => {
class Bar {
hello() {
return "hello";
}
}
});
bar = new Bar();
//uncaught ReferenceError: Chart is not defined
我找到了一个解决方法,这是通过使用window.Bar=class-Bar来完成的
require(['foo'],
(foo) => {
window.Bar = class Bar {
hello() {
return "hello";
}
}
});
bar = new Bar();
//OK
然而,当使用巴别塔转换时,这不是一个方便的解决方案
您知道其他更正确的方法来导出/定义这个类,以便从更高级别调用它吗
Thanx提前你不会的。相反,您应该在回调中编写完整的模块代码:
require(['foo'], foo => {
class Bar {
hello() {
return "hello";
}
}
const bar = new Bar();
// ...rest of code here...
});
这是编写样式模块的正常方式。您不需要在脚本的顶层编写任何内容,所有内容都在回调中,这样Require就可以在适当的时候调用它
导出/定义此类的正确方法
当您想要“导出”东西时,您要做的是创建一个模块。为此,您可以使用define
调用,而不是require
。然后,您可以返回您想要导出的内容。例如:
define(['foo'], (foo) => {
class Bar {
hello() {
return "hello";
}
};
return Bar;
});
如果此代码位于名为bar.js
的文件中,并且您已正确设置了RequireJS配置,以便RequireJS可以找到它,那么您可以从其他地方执行require([“bar”]、function(bar){…})
,或者其他模块可以使用它:
define(["bar"], function (Bar) {
const bar = new Bar();
// do more stuff...
});
要求
和定义
加载依赖项并使用已解析的依赖项执行回调,但只有定义
实际定义了模块。除非您在模块中,否则没有使用RequireJS“导出”的概念,这意味着您使用define