javascript - js : how to access a class defined inside require from the outside (accessibility issue)

标签 javascript class requirejs require

这个问题困扰了我一段时间。 我试图从外部调用一个类 require (可访问性问题),我的代码如下所示。

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

但是,当使用 Babel 进行转换时,这不是一个方便的解决方案。

您是否知道任何其他更正确的方法来导出/定义此类,以便可以从上层调用它?

提前致谢

最佳答案

你不会。相反,您可以在回调内部编写完整的模块代码:

require(['foo'], foo => {
    class Bar {
        hello() {
            return "hello";
        }
    }
    const bar = new Bar();
    // ...rest of code here...
});

这是编写 Require 样式模块的正常方式。您无需在脚本的顶层编写任何内容,所有内容都在回调中,尤其是这样 Require 可以在适当的时候调用它。

关于javascript - js : how to access a class defined inside require from the outside (accessibility issue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43113041/

相关文章:

requirejs - 了解 r.js、almond 和相对路径

javascript - Three.js 中的体素化 — 来自纹理的粒子 Material

javascript - 如果元素移动,如何使用 css 或 jquery 为该移动设置动画?

javascript - 持续时间的移动用户界面

c# - C# 中的静态类,优点/缺点是什么?

php - 我如何在 cakephp 1.3 中使用独立类?

javascript - 如何跟随鼠标向相反方向移动?

jquery - 使用类名的一部分作为 .addClass 的变量

javascript - 使用 StickyTableheaders 且 requirejs 未加载

javascript - 如何在嵌套模块中调用模块? javascript