我正在尝试学习RequireJS,我对加载全局变量感到有些困惑。我有一个外部脚本,检查是否已实例化window.Foo
。这意味着我需要在 require(// url / to / external-script)之前实例化所述外部脚本
我的问题是我不确定如何在requireJS中实例化它
我在单独的文件中define()
然后在加载外部脚本之前加载该文件吗?
我是否在requirejs.config
答案 0 :(得分:3)
全局变量未在requirejs.config
中实例化。基本上有两种方法可以做到。
您可以使用script
元素并将实例化内联或外部脚本放置,只要此<{1}}元素出现之前启动您的模块的元素加载。所以:
script
另一种方法是使用RequireJS模块来执行工作,假设它被称为<script>
window.Foo = ... whatever;
</script>
:
foo-config
然后,需要define(function () {
window.Foo = ... whatever;
});
定义的模块必须在其依赖项中包含上述模块。如果您使用第三方模块本身使用window.Foo
将自己定义为AMD模块,这可能会有问题,因为没有机制可以将依赖项添加到此类模块。您可以使用嵌套的define
:
require
但这很丑陋,容易出错。如果您有多个页面使用require(['foo-config'], function () {
require(['third-party']);
});
,则需要始终记住使用嵌套third-party
加载它。
另一方面,如果第三方模块不支持AMD,因此您使用require
配置加载它,那么您可以将模块添加到那里的依赖项列表中。
shim