2014-11-05 320 views
0

我在學習RequireJS,我對加載全局變量有點困惑。我有一個外部腳本,用於檢查window.Foo是否已實例化。這意味着我需要實例之前,我要求(// URL /到/外部腳本)上述外部腳本在requirejs中使用全局變量

我的問題是,我不知道我怎麼實例化它requireJS

在單獨的文件中執行define(),然後在加載外部腳本之前加載該文件?

做我的requirejs.config

回答

3

全局變量在requirejs.config沒有實例創建它。基本上有兩種方法可以做到這一點。

您可以使用script元素,並把實例在線或外部腳本,只要把這個script元素出現揭開序幕你的模塊加載一個之前。所以:

<script> 
    window.Foo = ... whatever; 
</script> 

另一種方法是使用RequireJS模塊進行工作,可以說,它被稱爲foo-config

define(function() { 
    window.Foo = ... whatever; 
}); 

然後你的模塊,需要有window.Foo定義必須有上述模塊依賴關係。如果您使用的第三方模塊本身使用define將自己定義爲AMD模塊,這可能會產生問題,因爲沒有任何機制可以通過依賴關係添加到此類模塊。您可以使用嵌套require

require(['foo-config'], function() { 
    require(['third-party']); 
}); 

但是這是醜陋的,而且容易出錯。如果您有多個使用third-party的頁面,則需要始終記住使用嵌套require加載它。另一方面,如果第三方模塊不支持AMD,因此您使用shim配置加載它,那麼您可以將模塊添加到那裏的依賴關係列表中。

shim: { 
    'third-party': ['foo-config']; 
}