0

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

有没有一个好的做法来实现这一点?在某种程度上:

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

b) 不会打破似乎支配 RequireJS 良好实践的“非全局”范式

在我看来,选项 a) 使得随着应用程序变得越来越大,代码变得非常难以处理。而且很难理解,因为您需要不断追踪所有这些参数将您带到哪里。

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

4

1 回答 1

0

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

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

并在 ChildView 中像这样访问。

this.options.dropdown

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

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

所以我可以访问客户IDApp.customerId所以我可以像在我的应用程序的任何地方

但我不直接将视图/模型附加到App. 因为,通过在任何地方访问您的视图/模型很容易破坏您的应用程序。其他开发人员可以在您的应用程序中的任何位置访问它们。当你调试一些错误时它会变得更加复杂,因为他可能已经在你的所有应用程序中使用了那个模型。这比追踪更复杂this.options。因此,您应该知道应该将哪些内容包含在全局范围中。

于 2013-10-21T13:43:26.597 回答