我正在使用AMD模块构建我的第一个主要项目 - 它是一个客户端项目,我正在使用require.js来动态加载模块。
我非常满意于必须明确导入每个模块的依赖关系,永远不会触及全局变量,不需要担心事情被加载的顺序。
到目前为止一切顺利。
但是对于{@ 1}},window
,document
等DOM全局变量的依赖呢?
全球访问这些是否很酷?每次依赖Node
时,我都会感到很脏,而没有声明依赖。
我想最终为这些东西编写自动化测试,我假设我必须用全局模拟替换所有这些依赖项,例如在node.js下进行测试通过?看起来这很快就会变成一种依赖性。
如果我要执行以下操作该怎么办?例如加载require.js后立即:
document.createElement()
然后在需要时明确导入define("window", function () { return window; });
作为模块:
window
现在我应该可以很容易地替换它。
当然,我理解这对依赖于全局变量的第三方模块没有帮助。
是否有任何“正确”的方式或最佳做法可以避免模块中的全局依赖?