在firefox xul扩展中使用requirejs

时间:2013-08-26 16:36:03

标签: javascript firefox-addon requirejs xul

我想使用requirejs在firefox xul插件中管理我的代码,我无法找到它来找到我的模块。

我知道xul与data-main属性不匹配,所以我将main.js脚本作为第二个脚本:

<script src="chrome://myPackage/content/require.js" type="application/x-javascript"></script>
<script src="chrome://myPackage/content/main.js" type="application/x-javascript"></script>

这成功调用了脚本,并且main.js中有require函数,但是当我运行

require(['lib1'], function(lib1){
    alert(lib1.val1);
})

警报永远不会弹出(lib1与main.js位于同一目录中)。

我在将baseUrl设置为

的情况下尝试了此操作
require.config({
    baseUrl: "chrome://myPackage/content/"
})

它无论如何都无效。

有谁知道我怎么能让require.js找到适合我模块的地方?

附录**

我添加了错误处理函数,返回的错误代码是

http://requirejs.org/docs/errors.html#timeout

我已成功将测试模块加载到普通网页中。这似乎证实问题是路径配置(在失败之前还需要15秒的超时)

1 个答案:

答案 0 :(得分:2)

Firebug似乎有一个有效的requirejs版本。但更重要的是,它们具有更好的mini-require.js,在覆盖中使用时不会污染共享的全局范围(如果使用正确:p)

我建议您查看这些实现以及使用它的代码。

主动警告: 请注意,如果您的加载项使用通过定义全局函数或变量或隐式声明函数内的变量来在叠加层(window)中定义范围上的大量新属性的代码,则可能会干扰其他代码在相同的范围内运行(浏览器代码本身和其他附加组件)。此外,如果您要将附加组件提交到addons.mozilla.org,那么如果您的插件“污染”主叠加层中的全局范围/命名空间,则审阅者可能不会将其公开状态。