如何访问 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 */);
});
我正在尝试使用 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 */);
});