【问题标题】:How to reproduce Backbonejs Models & Collections in node.js server side如何在 node.js 服务器端重现 Backbonejs 模型和集合
【发布时间】:2013-07-01 02:11:04
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: node.js oop backbone.js models


    【解决方案1】:

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

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

    • 型号
    • 观看次数
    • 路由器
    • 模板 (HTML)
    • 收藏
    • 实用程序
    • 第三方库

    服务器将拥有:

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

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

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

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

    编辑

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

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

    关于您的实际问题:

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

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

    【讨论】:

    • 我认为您为“瘦服务器”应用程序提供了一个很好的案例,其中 API 只不过是数据存储和其他 3rd 方服务的持久性和控制器逻辑。但是,如果后端服务也需要使用模型来抽象关于它们的服务怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    相关资源
    最近更新 更多