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

标签 node.js oop backbone.js models

我是 nodejs 的新手,但我对在客户端和服务器之间使用通用语言和习惯用法的可能性感到兴奋。

有谁知道一个 nodejs 框架,它为我们在带有 backbonejs 的客户端上使用的模型提供了相同的 OO 习惯用法和类功能?我发现在主干模型和集合与 Node 中的手动 javascript 类之间切换很不协调。

Controller 被发射器和回调所取代,当然没有 View ,但我是否错误地想要模型客户端和服务器端一致的 OO 范例?我是否应该使用与数据库无关的 OOP 来实现该目标,例如 Redis?

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

最佳答案

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

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

  • 模特
  • 浏览量
  • 路由器
  • 模板(HTML)
  • 收藏
  • 实用程序
  • 第三方库

服务器将有:

  • Schemas(用于需要存储在数据库中的模型)
  • 模特
  • 实用工具
  • restful api 响应的服务器代码(例如 express.js)
  • 图书馆

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

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

顺便说一下,有一些异常(exception)情况,您希望在服务器上实现相同的 MVC 以实现快速渲染和搜索引擎合规性,airBnb 正在使用 Backbone 和 Node 来实现这一点。一旦他们稳定了 API,他们将在那里开源解决方案

编辑:

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

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

关于您的实际问题:

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

Rendr is a small library from Airbnb that allows you to run your Backbone.js apps seamlessly on both the client and the server. Allow your web server to serve fully-formed HTML pages to any deep link of your app, while preserving the snappy feel of a traditional Backbone.js client-side MVC app.

关于node.js - 如何在 node.js 服务器端重现 Backbonejs 模型和集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396606/

相关文章:

ajax - node.js:在成功验证 get 请求后提供文件(特别是 apk)

node.js - 用户在评论系统中的显示名称

javascript - Backbone.js:在模型中设置模型属性?

javascript - Backbone.js 计时器 - 无用的 setInterval 调用

javascript - 使用 Node.js 存储哈希值

java - 如何在运行时获取方法的 JavaDoc?

具有从 `NameBase` 类到模板 `Name` 类的继承的 C++ 习惯用法(或模式)

c# - C#中的面向对象问题

jquery - Zombie.js browser.fire 无法与 Backbone.Events 一起使用

javascript - 大多数中间件(如 compress)不再与 Express 捆绑在一起