在我目前的项目中,我正在使用krpano,一个用于浏览器的多分辨率全景图像查看器。您可以在全景图上添加可点击的热点,并定义在点击热点时执行的功能。
我想要执行的方法是在require.js模块中,但krpano库只调用附加到全局窗口对象的方法。
如何将我的方法从模块添加到窗口对象,以便我仍然可以访问所有其他依赖模块?
我的应用程序包含大量具有依赖关系的模块。
感谢。
答案 0 :(得分:5)
你没有提供太多细节,但有两种方法可以解决这个问题。什么是最合适的,取决于您的应用程序的具体情况。
如果我不得不从模块泄漏函数,这是我喜欢做的事情,因为它不会使模块本身泄漏该函数。如果这个模块可以重复使用,那么我可以在另一个我不必泄漏的项目中使用它。我像任何其他AMD模块一样编写我的模块,然后,我将胶水代码拉出我需要泄漏的内容。模块(在mod.js
文件中):
define(["a", "b"], function (a, b) {
return {
foo: function () {},
bar: function () {}
};
});
胶水代码:
require(["mod"], function (mod) {
window.foo = mod.foo; // Leak the function I need for **this** project.
});
使模块本身泄漏功能。这会使模块本身泄漏并损害重用,但有时某些模块与创建的特定项目紧密相关,因为重用不会发生,所以......
define(["a", "b"], function (a, b) {
function foo () {}
window.foo = foo;
return {
foo: foo,
bar: function () {}
}
});