【问题标题】:Backend architecture for REST API-backed backbone.js app?REST API 支持的backbone.js 应用程序的后端架构?
【发布时间】:2012-06-19 23:49:29
【问题描述】:

我们正在寻求开发一个内部生产力应用程序,该应用程序相当 JS-heavy(想想:变成下拉列表的可编辑字段,当前页面上的大量动态添加和删除部分等),并由分离现有的 JSON REST API 而不是本地数据库。

在过去使用现有的 Rails+jQuery 制作动态页面的经历很糟糕,backbone.js 似乎是一个更合适的工具。问题是,什么是构建后端的好方法? Rails 似乎引入了不必要的复杂性,因为我们不会使用 ActiveRecord 数据库模型。其他一些想法是使用 Sinatra、Node.js 或纯 HTML。以下是更多注意事项:

  • 它绝不是单页应用程序。至少会有 3 个不同的“非散列”网址部分,因此路由引擎会很有帮助。
  • 我们是一家 Ruby 商店,因此任何基于 Ruby 的东西都将更易于维护。
  • 这个应用程序是独一无二的,因为它几乎不会将数据动态保存到服务器。发回数据后页面重新加载很好。但是,如上所述,在此之前会有大量的客户端操作。

【问题讨论】:

    标签: rest architecture backbone.js backend


    【解决方案1】:

    问题是将后端构建为纯 api 引擎。然后按照您的计划在客户端计算机上使用 MVC 堆栈。

    Daniel Doubrovkine 是 Art.sy 的首席技术官。他使用Grape 骑在机架上。

    Grape 是一种用于在 Rack 上构建 API 的 DSL。包括可测试性并处理多个版本、身份验证、访问控制和文档的问题。

    他的presentation 关于这个。他的blog post 关于 Grape 的最新版本。

    【讨论】:

    • 我知道我的问题不是很清楚 :) REST API 已经存在并将与此应用程序分开。我的问题是在 this 应用程序的主干下使用什么,而不是支持 REST API 的应用程序。
    【解决方案2】:

    Backbone.js 相当灵活;没有多少是硬连线的。也就是说,默认情况下,它会查找返回格式为 JSON 的模型的后端服务。因此,如果您有一个具有属性 foo 的模型,那么您的服务应该返回:

    { "foo": "bar" }
    

    或者对于一个集合:

    [ { "foo": "bar1" }, { "foo": "bar2" } ]
    

    除此之外,您可以通过为每个模型类型定义一个 urlRoot 属性,然后是一个返回用于获取模型的 URL 的 url 函数来指定 URL 的外观给定 urlRoot 和模型的 cid(客户端 ID)。

    总之,如果你实现了一个可以处理原始 JSON 的标准 REST API,那么你应该没问题。

    【讨论】:

    • 所以你基本上是在推荐我使用带有纯 HTML 并且没有底层 Web 框架的主干.js?
    【解决方案3】:

    您想知道在客户端的 Backbone 下使用什么?

    查看marionetteTutorialBlogging about it.

    【讨论】:

      【解决方案4】:

      既然你说你有 Ruby 专业知识,我建议你看看Sinatra。它看起来是制作 REST 后端的最简单方法,尤其是对于 Ruby 开发人员而言。

      【讨论】:

        【解决方案5】:

        我已经看到它成功了with Middleman

        Middleman 基本上会编译您的静态资产,然后您可以将其发送到 CDN 或基本 Web 服务器(例如 Apache 或 Nginx)。您需要的 3 个不同页面由 Middleman 生成 3 个单独的 HTML 文件来处理。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-09
          • 1970-01-01
          • 1970-01-01
          • 2021-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-23
          相关资源
          最近更新 更多