如何在客户端处理复杂的JavaScript对象?

如何在客户端处理复杂的JavaScript对象?,javascript,jquery,ruby-on-rails,asp.net-mvc,Javascript,Jquery,Ruby On Rails,Asp.net Mvc,编辑:我将把这个问题分成两个更具体的问题 我试图了解客户端JavaScript开发的最佳实践和模式。特别是,如何在客户机上管理更复杂的数据模型 例如,假设您在线管理某种商店目录,并且有一个产品,它具有非常典型的属性:{id、description、price等…}。但该产品也有一组可以关联的类别,因此需要获取另外两个列表:AvailableCategories和AssociatedCategories。当然,为了使问题更复杂,类别与表的关联不是简单的联接,而是具有元数据,如1-10之间的标量数,

编辑:我将把这个问题分成两个更具体的问题

我试图了解客户端JavaScript开发的最佳实践和模式。特别是,如何在客户机上管理更复杂的数据模型

例如,假设您在线管理某种商店目录,并且有一个产品,它具有非常典型的属性:{id、description、price等…}。但该产品也有一组可以关联的类别,因此需要获取另外两个列表:AvailableCategories和AssociatedCategories。当然,为了使问题更复杂,类别与表的关联不是简单的联接,而是具有元数据,如1-10之间的标量数,用于描述产品与类别的关联程度。然后假设还有四个或五个其他关联,其中一个有一个“可用”表,可能需要分页(例如,可能您将产品与表中有一百万个项目的某个项目关联,并且您希望一次只下拉100个项目,当然是可搜索和可排序的)

我的观点是,有很多模型,以及与元信息的连接关联,一些数据可以预先获取或在页面加载时静态下载,而一些数据必须动态获取。当然,你不仅仅需要基本模型,还需要“可观察的”,这样,如果有人选择与你的产品相关的颜色,你会在页面上的其他地方得到通知(免费)

我正在考虑迁移到客户端MVC框架,如SproutCore,但希望看到一些更轻量级的选项和模式。我希望听到你使用什么,为什么使用它,以及关于这个问题空间的任何其他想法


谢谢。

当我构建javascript应用程序时,我不是从数据模型开始,而是从应用程序支持的用户交互开始。然后,我通过进行非常特定的ajax RPC调用来设计这些交互,这些调用只填充我正在查看的视图。与该视图中的操作相同,我有非常具体的ajax RPC调用,它完全满足该视图的要求

在某些情况下,我最终会使用更通用的RPC调用,更多的视图可以共享类似的数据,但我会进行重构,当我达到它时,我不会这样开始建模

到目前为止,正如您所说,我通常会在应用程序开始时读取一些静态类别等,但我已设法避免在javascript内存中存在需要与后端同步的庞大复杂缓存数据模型


在本文中,我发现MVP模式比MVC模式更好——用事件驱动我所有的应用程序代码。

我不确定我是否理解你的问题,但我认为我的情况与MVC模式类似:

我有一个相当复杂的模型,必须维护它的客户端版本。对模型的调用是异步进行的,模型管理缓存和预取。在模型上进行更新时,它会触发一个事件,以便通知UI组件


我没有使用任何框架来实现数据模型。(但我使用YUI进行ajax通信和UI小部件)

我不确定自己是否理解。由于JSON对象对应的服务器端对象的复杂性,您是否发现使用JSON对象很困难

RubyonRails提供了两个世界中最好的:js.erb模板。让AJAX请求接受js并创建一个js.erb模板,该模板可以直接引用Rails对象,包括所有关联等。该模板将使用javascript代码,可以使用erb符号访问Rails对象中的值:

我正在考虑迁移到客户端MVC框架,如SproutCore,但希望看到一些更轻量级的选项和模式


如果你想要一些轻量级的东西,那就太棒了。我正在编写一个单页Web应用程序(80%完成)。它从一个基于约30个表和一堆“视图”的RESTful web服务获取/设置所有数据。到目前为止,这一切都很简单,我对此感到震惊,萨米肯定帮了大忙。

我不明白这个问题。复杂的模型是复杂的。另一个UI框架SproutCore并没有使复杂的模型变得更简单。