跟踪和引用一般JavaScript对象(最有可能是Dojo声明)的最佳实践是什么,这些对象可能已在应用程序的一个区域(读取模块)中声明但需要在另一个区域中使用?我们在这里假设AMD。
正如Dojo "Using Declarative Syntax" reference guide的“非小部件”部分所述:
...常规对象没有像基于Dijit的小部件那样的注册表,因此为了能够在实例化它们之后引用它们,您必须在全局范围内创建对它们的引用。
全球范围? Rrraaughh? "Modern Dojo"最大的问题之一就是对全球命名空间的使用不屑一顾:
“现代”Dojo的核心概念之一是全局命名空间中的内容很糟糕。这有很多原因,但在复杂的Web应用程序中,全局命名空间很容易被各种代码污染[...]。这意味着在“现代”Dojo中,如果您要访问全局命名空间中的某些内容停止,因为您做错了。
另外,从该指南:
再次,在我之后重复“全局命名空间不好,全局命名空间不好,我不会使用全局命名空间,我不会使用全局命名空间”。
鉴于此,是否有任何其他流行的想法表达可能有一个存在于应用程序上下文中的通用对象注册表? Dojo定义一个模块的可行性或者可能是显而易见的,该模块的唯一目的是在整个应用程序中使用对象的混合引用?