可以/我应该明确要求像AMD模块中的窗口这样的DOM全局​​变量吗?

时间:2016-03-21 14:26:51

标签: javascript requirejs amd

我正在使用AMD模块构建我的第一个主要项目 - 它是一个客户端项目,我正在使用require.js来动态加载模块。

我非常满意于必须明确导入每个模块的依赖关系,永远不会触及全局变量,不需要担心事情被加载的顺序。

到目前为止一切顺利。

但是对于{@ 1}},windowdocument等DOM全局​​变量的依赖呢?

全球访问这些是否很酷?每次依赖Node时,我都会感到很脏,而没有声明依赖。

我想最终为这些东西编写自动化测试,我假设我必须用全局模拟替换所有这些依赖项,例如在node.js下进行测试通过?看起来这很快就会变成一种依赖性。

如果我要执行以下操作该怎么办?例如加载require.js后立即:

document.createElement()

然后在需要时明确导入define("window", function () { return window; }); 作为模块:

window

现在我应该可以很容易地替换它。

当然,我理解这对依赖于全局变量的第三方模块没有帮助。

是否有任何“正确”的方式或最佳做法可以避免模块中的全局依赖?

0 个答案:

没有答案