我在學習RequireJS,我對加載全局變量有點困惑。我有一個外部腳本,用於檢查window.Foo
是否已實例化。這意味着我需要實例之前,我要求(// URL /到/外部腳本)上述外部腳本在requirejs中使用全局變量
我的問題是,我不知道我怎麼實例化它requireJS
在單獨的文件中執行define()
,然後在加載外部腳本之前加載該文件?
做我的requirejs.config
我在學習RequireJS,我對加載全局變量有點困惑。我有一個外部腳本,用於檢查window.Foo
是否已實例化。這意味着我需要實例之前,我要求(// URL /到/外部腳本)上述外部腳本在requirejs中使用全局變量
我的問題是,我不知道我怎麼實例化它requireJS
在單獨的文件中執行define()
,然後在加載外部腳本之前加載該文件?
做我的requirejs.config
全局變量在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'];
}