在requirejs中使用全局变量

时间:2014-11-05 16:31:34

标签: javascript requirejs js-amd

我正在尝试学习RequireJS,我对加载全局变量感到有些困惑。我有一个外部脚本,检查是否已实例化window.Foo。这意味着我需要在 require(// url / to / external-script)之前实例化所述外部脚本

我的问题是我不确定如何在requireJS中实例化它

我在单独的文件中define()然后在加载外部脚本之前加载该文件吗?

我是否在requirejs.config

中创建了它

1 个答案:

答案 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