请参阅复杂RequireJS应用程序中的特定对象实例

时间:2013-10-21 13:11:18

标签: javascript backbone.js requirejs

我正在使用BackboneJS和RequireJS构建一个不那么小的应用程序,我有时会发现自己想要访问一些对象(比方说:某个实例化的视图#1),来自另一个远在应用程序的对象层次结构树(例如,完全不相关的视图#2实例的子子视图)。

有一个很好的做法来实现这一目标吗?以某种方式:

a)不涉及在对象创建时跨不同对象传递参数

b)不打破似乎规定RequireJS良好做法的“无全局”范式

在我看来,选项a)使代码变得非常难以处理,因为应用程序变大了。并且难以理解,因为您需要不断追踪所有这些参数引导您的地方。

选项b(使用全局变量)是全有或全无。如果我使用一个全局,我可以使用一个大的全局命名空间我的所有应用程序,我会错过其中一个,我认为,最重要的RequireJS功能。

1 个答案:

答案 0 :(得分:0)

在我的应用中,我有最多3级的层次结构。我正在初始化视图时传递选项,如下所示。

var view = new ChildView({dropdown: this.dropdowm});

并在ChildView中以这样的方式访问。

this.options.dropdown

这是Backbone.js中规定的方式。有时,对于“客户ID”,“产品ID”等属性,我不会将它们传递给层次结构中的每个级别。我初始化一个名为App的全局对象,并将这些属性附加到App,如下所示。

var App = {};
App.cutomerId = "12";

因此,我可以在我的应用中的任何位置访问App.customerId等客户ID。

但我没有将观点/模型直接附加到App。因为,通过随处访问您的视图/模型很容易打破您的应用。其他开发人员可以在您的应用中的任当您调试某些错误时,它会变得更加复杂,因为他可能已经在您的所有应用程序中使用了该模型。这比跟踪this.options更复杂。因此,您应该了解应该将哪些内容纳入全球范围。