如何访问 require.js 模块中的闭包函数?

How to access a closure function in a require.js module?

我正在尝试使用 require.js 加载我的模块依赖项,到目前为止它正在运行,但我有疑问。我创建了一个小函数来测试模块并将其放在名为 panelTest.js:

的文件中
define(['./panel/View', './panel/TitleView'], function(View, TitleView) {

    return function test(container) {

        // main view
        var panel = new View(container, 'main');
        var panelTitle = new TitleView(panel.getContainer(), 'main-title');
        panelTitle.setTitle('Properties Panel');
        //panelTitle.addCss('pjs-panelTitle');
        panel.addView(panelTitle);

        // sections
        var top = new View(panel.getContainer(), 'top');
        panel.addView(top);
        var middle = new View(panel.getContainer(), 'middle');
        panel.addView(middle);
        var bottom = new View(panel.getContainer(), 'bottom');
        panel.addView(bottom);

    };
});

在使用模块的 html 中,我包含了这个脚本标记,如 require.js documentation 所示,以加载 panelTest.js.

<script data-main="panelTest.js"
    src="require.js"></script>

我的问题是如何从模块外部调用测试函数,因为容器参数应该来自在模块外。

您必须通过 RequireJS 提供的适当渠道访问该模块。您可以在加载 RequireJS 的标签之后出现的 script 标签中这样做:

require(['panelTest'], function (panelTest) {
  panelTest(/* some value */);
});

根据您显示的代码,您的 panelTest 模块作为 "main module" 似乎没有真正意义,因此我不会将其作为 data-main

如果你想从另一个模块使用它,将模块放在它自己的文件中并像这样定义它:

define(['panelTest'], function (panelTest) {
  panelTest(/* some value */);
});