3

我是 nodejs 的新手,但我对客户端和服务器之间的共同语言和习语的可能性感到兴奋。

有谁知道一个nodejs框架,它为我们在客户端上使用backbonejs的模型提供相同的OO惯用语和类功能?我发现在 node.js 中的骨干模型和集合以及手动滚动的 javascript 类之间切换很不协调。

控制器被发射器和回调所取代,当然也没有视图,但是我想要一个模型客户端和服务器端一致的 OO 范式是不是错了?我是否应该使用与数据库无关的 OOP 来实现 Redis 等目标?

如果这个问题对 SE 来说太模糊,请随时关闭我。

4

1 回答 1

5

使用 Backbone.js 时,您应该在客户端上有一堆模型,这些模型从服务器获取并通过 REST api (CRUD) 更新到服务器。客户端负责 MVC,服务器只回答一堆简单的查询、删除和更新。

这意味着客户端可能包含以下代码:

  • 楷模
  • 意见
  • 路由器
  • 模板 (HTML)
  • 收藏品
  • 实用程序
  • 第 3 方库

服务器将具有:

  • Schemas(用于需要存储在 DB 中的模型)
  • 楷模
  • 实用程序
  • 用于 restful api 响应的服务器代码(例如 express.js)

那么......应该在客户端和服务器之间共享哪些代码?一些实用程序,也许是模型......(虽然认为不应该共享模型代码)

基本上,尽管我们(开发人员)都对在客户端和服务器之间共享代码感到兴奋,但用例、角色和职责并不真正需要这种耦合。(至少那是发生在我身上的事)

顺便说一句,有一些例外情况,您希望在服务器上实现相同的 MVC 以实现快速渲染和搜索引擎合规性,airBnb 正在使用骨干网和节点执行此操作。一旦他们稳定了 API,他们将在那里开源解决方案

编辑

根据我的经验,骨干模型是非常薄的仅数据对象(和一些验证代码)。观众观察它们并改变它们,所以大部分代码都在那里。我认为在这种情况下,将代码从服务器解耦到客户端是一个很好的设计决策,它允许您在不更改客户端的情况下使用您的数据库模式。

但当然,这在其他用例中可能会有所不同......

关于您的实际问题:

您可以查看 airBnB 项目 Rendr:(https://github.com/airbnb/rendr

Rendr 是 Airbnb 的一个小型库,可让您在客户端和服务器上无缝运行 Backbone.js 应用程序。允许您的 Web 服务器向应用程序的任何深层链接提供完整格式的 HTML 页面,同时保留传统 Backbone.js 客户端 MVC 应用程序的快速感觉。

于 2013-07-01T16:37:19.423 回答