如何在node.js服务器端重现Backbonejs模型和集合

met*_*ate 3 oop models node.js backbone.js

我是nodejs的新手,但我很高兴客户端和服务器之间存在共同语言和习惯用语的可能性.

有没有人知道nodejs框架为我们在带有backbonejs的客户端上使用的模型提供相同的OO习语和类功能?我发现在主干模型和集合之间切换以及在节点中手动滚动javascript类是很不耐烦的.

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

如果这个问题对于SE来说太模糊,请随意关闭我.

eke*_*ren 5

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

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

  • 楷模
  • 查看
  • 路由器
  • 模板(HTML)
  • 集合
  • utils的
  • 第三方自由党

服务器将拥有:

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

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

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

顺便说一下,有一些例外情况,你想在服务器上实现相同的MVC以实现快速渲染和搜索引擎合规性,airBnb正在通过骨干和节点来实现这一点.一旦稳定API,他们就会在那里开源解决方案

编辑:

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

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

关于你的实际问题:

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

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