在使用Node.js和Websockets的服务器端上重新使用Backbone.js模型

29

我一直在研究:

http://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node

我有几个关于共享服务器端模型和覆盖同步的问题。实时模型同步架构 ftw。

  1. 模型
    在这个例子中,他同步了整个应用程序状态。我的应用程序状态的一部分是用户模型,它处理登录、查找使用平台类型等内容。我使用得对吗?我在这个模型中有客户端会话数据,这真的不需要在服务器上,我是否应该把它放在服务器上?

    对于其他严格需要与服务器同步的应用程序数据模型,我怎么管理这些模型呢?是否有一种 "视图" 类型的组件可以处理对模型的更改,并根据服务器的需要对模型进行操作?

  2. 同步
    我想要重写同步方法以与服务器同步并更新任何其他需要更新的客户端。如何编写一个同步方法,使其能够实现客户端->服务器和服务器->客户端的工作,以便无论在哪里调用它,所有人都能得到更新?


4
我建议不要在服务器上使用backbone。这是一个好主意,但实际上并不起作用。它是一个泄漏的抽象层,会妨碍工作。 - Raynos
1
个人经验表明,尝试使用Backbone会阻碍开发。实际项目表明,它不是一个好的工具。它是为客户端开发而设计的,对于服务器来说有更好的模式可用。 - Raynos
1
@Raynos 谢谢,您能否指向一些资源,解释一种在这种情况下适合服务端的模式?我应该采用类似的方式(mvc),但是从头开始构建它吗? - fancy
2
@Raynos,如果您的Web应用程序直接与数据存储通信,我可以理解为什么backbone会感到多余。当Web应用程序与一个或多个REST API作为数据存储进行通信时,服务器上的backbone确实对我们有很大帮助。因此,如果您的应用程序正在与REST API通信,并且尚未有客户端库可用,Backbone作为一种快速和有用的通用客户端库非常有效。 - Edward M Smith
Backbone似乎有点过度设计了。如果不了解你的数据,我无法对1)发表意见,但我建议保持简单。2)可以尝试使用nowjs来同步客户端和服务器端数据。 - nicholas
显示剩余5条评论
1个回答

4
有几个方面使backbone非常适合客户端应用程序,但对于基于服务器的环境则没有什么用处。backbone的核心是其事件模块,框架就是围绕它构建的(模型基本上是由事件管理的集合,视图是根据模型事件更改进行渲染的粘合代码等),在服务器上几乎没有用处:你得到的唯一真正的事件是请求或套接字数据的各种事件,这些都由中间件和节点本身处理和处理。
模型:
- 如果您在服务器上使用某种ORM,则它应该已经提供了处理模型更改所需的事件处理。由于您在服务器上不执行任何动态视图更新,因此您不需要backbone为模型提供的任何基础结构。 - 如果您没有使用ORM(例如实时未登录聊天:),则可以使用Backbone的模型,但它们不适用于较大的数据集或任何类型的存储,并且最终仍然使用下划线包装的哈希/数组。

1
服务器端模型仍然允许进行验证,这也许是在服务器端重用模型的最大原因。 - Mario
是的,你可以用于服务器端验证,但你真正想要的是重复使用验证和模式声明,因为ORM包中已经包含了大部分的模式和验证,并且通常比Backbone自己的模型更加健壮(它们仍然只是分别围绕对象和数组的包装器)。 - galileoMonkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接