0

我是骨干新手,在通过一些教程应用程序后尝试了我的第一个应用程序。

我想知道完成以下任务的最佳方法是什么

在后端(导轨)

我有一个模型名称 Business,它是一个具有很多属性的复杂模型,它有一个关联的地址 ( has_one :address),还有一个头像和另一个个人资料图等等。

从我的前端,我希望能够获取和更新业务资料的特定部分,假设我只想获取包含名称、类别和地址的 basic_info,而不是希望能够更新资料图片和头像。

我在骨干网看到的是模型具有保存、更新、获取、销毁等方法

如果我想要其他方法,例如fetch_basic_info, fetch_profile_picture,update_profile_picture怎么办?针对这些,我希望相应地通知相关视图。

这是我想出的

假设我想获取基本信息

  • fetch_basci_info向主干模型添加功能

    • $.ajax在此函数内部使用向服务器发送自定义 ajax 请求
    • 手动触发事件"basicinfo:fetched"
  • 在我的路由器功能里面

    • 创建模型对象
    • 创建一个新视图让我们说BasicInfoView并将模型对象传递给它
    • 在视图内部绑定模型的偶数可以说model.bind('basicinfo:fetched', this.render)
    • 路由器初始化时调用model.fetch_basic_info(在路由器初始化中)

所以路由器被称为它创建视图绑定一个自定义事件并调用model.fetch_basic_info()请求发送到服务器返回响应(我是否手动调用set来设置主干模型的属性)。之后触发自定义事件事件,通知视图并呈现自己

这是我的第一个真正的主干应用程序,所以如果我正在做一些真正不碍事的事情,请阻止我。

您对此有何看法。

感谢您阅读和反馈。

4

2 回答 2

0

我的第一个想法是您将复制骨干已经提供的许多功能。我看不出您必须在客户端完全复制您的业务模型的任何理由。为什么不将您的基本信息、个人资料等分解为单独的 Backbone 模型,并根据需要将它们应用到您的视图中。

于 2012-06-15T12:59:09.353 回答
0

您尝试做的不是非常 RESTful。如果您尝试这样做以节省资源或网络带宽,那么它几乎可以肯定是过早的优化 - 除非我们谈论成百上千的字段 - 在这种情况下会有更好的解决方案。

事实是,仅获取个人资料图片使用与获取 50-100 个字段几乎相同的资源。是的,数据稍微多一点,但考虑到网络连接中 90% 的工作、延迟、资源和等待时间来自建立连接,您实际上并没有节省那么多。

加上在数据库端,一个

select * from businesses where id=123

只使用一点点

select profilepic from businesses where id=123

因为工作中最困难的部分是建立与数据库的连接并找到正确的行。在那之后,它只是更多的数据——添加 50 个额外的列将对性能产生不明显的影响。

唯一一次失败是您的模型/表包含数百或数千个属性。在这种情况下,解决方案是将模型拆分为子模型。并通过 REST 单独处理它们。但它们应该是业务逻辑类型。例如,Business 包含 Address、Employee、ShareStructure。

我自己曾经是一个过早的优化器......“当我只需要 1 列时,不能返回 10 列”。但是,如果尝试为您可能需要的各种组合中的每个数据子集编写 Web 服务 API,那么您的 API 实际上将无法使用和维护。你也永远不会完成任何工作。

假设你想从 facebook 的 API 中获取 CocaCola 的头像,你只需调用:

https://graph.facebook.com/cocacola

并获取图片属性。谁在乎您是否不需要其余数据?它使事情变得简单、宁静且易于维护。

于 2012-06-15T13:16:31.953 回答