2013-08-26 38 views
1

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

我知道,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(['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 

我已加载测试模块到正常的Web页面成功。这似乎证实了这个问题是路径配置(它也需要15秒的超时才能失败)

+0

检查附加组件SDK: https://developer.mozilla.org/zh-TW/Add-ons/SDK – rlib

回答

2

Firebug似乎有一个工作requirejs版本。但更重要的是,他们有一个更好的mini-require.js在覆盖使用时(如果正确使用:P),不会污染共享全球范围内

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

主动预警: 请注意,如果您的附加使用代码,要么通过定义全局函数和变量或隐函数内声明的变量,然后定义在覆盖(window)范围内大量的新特性这可能会影响在相同范围内运行的其他代码(浏览器代码本身和其他附件)。此外,如果您想将附加组件提交给addons.mozilla.org,则如果您的附加组件“污染”了主叠加层中的全局范围/名称空间,则审阅者可能不会将其公开。

+0

我已经看到萤火虫使用requirejs,我没有意识到他们正在使用它们自己的风格。谢谢你的收获。 – BostonJohn

+0

试着用mini-require不能解决问题,但我会继续看一下指南的萤火虫。 – BostonJohn