2013-08-26 99 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

相關問題