【问题标题】:Getting my application more DRY with rails and backbone.js使用 rails 和bone.js 让我的应用程序更加干燥
【发布时间】:2012-02-21 00:46:01
【问题描述】:

好吧,所以我决定在我的 Rails 应用程序中使用backbone.js,但我觉得我做了很多冗余编码。我在主干中有很多模型和模板,它们或多或少与它们的 rails 等效项相同。是否有某种宝石可以处理这个问题?诸如 act_as_backbonemodel 之类的东西,您将其放入生成主干模型的 rails 模型(有可能被覆盖以添加功能)。此外,如果存在某种 rails-backbone-view gem 可以让您将模板放在您的视图目录中并使用正常的部分/重用正常的 rails 视图,那就太好了。

【问题讨论】:

  • 最新的 railscasts 没有提到这样的事情。所以我假设这种宝石还不存在:railscasts.com/episodes/325-backbone-on-rails-part-2
  • 我刚刚创建了一个 github 存储库。也许有人可以帮助我开发这个宝石,因为这将是我的第一个。该仓库名为 act_as_backbonemodel

标签: ruby-on-rails model-view-controller backbone.js gem dry


【解决方案1】:

我所知道的最近的宝石是:https://github.com/codebrew/backbone-rails 也许结合:https://github.com/netzpirat/haml_coffee_assets

在 app/views 中拥有 Backbone 模板没有意义,因为这些应该是包含(几乎)没有逻辑的精简 JS(或编译为 js)文件。您应该考虑通过资产管道从 CDN 加载它们。

一个常见的用例是让 Backbone 处理前端数据逻辑并将 Rails 用作您的 API。

【讨论】:

    【解决方案2】:

    当我开始使用带有 Rails 的 Backbone 时(大约一年前),我也想要一个像这样的 gem(当时我使用的是 backbone-rails)。最初似乎在主干和 Rails 之间重复了很多事情,但随着开发的进展,我发现这是例外而不是规则。特别是如果您将 Rails 作为 API 使用,这种 gem 可能只在项目开始时有用,而在之后的相关性较低。

    我这样说是因为我们的大多数模型不再与我们的 Rails 资源有 1-1 的对应关系。例如,虽然需要有关人员的信息,但此信息来自多种资源的组合,并且不包括主要人员记录中的大部分数据。此外,在我们的应用中创建和修改它们是不合适的,并且创建只能通过邀请进行,并且完全作为不同的资源公开。

    不需要其他资源,但其他资源具有如此小的功能或数据子集,或者具有来自多个资源的数据,因此生成它们真的行不通。

    由于 rails 是我们案例中的 API,因此我们在视图层中没有任何重复。

    我发现创建一个与您使用骨干网的方式相匹配的自定义生成器,或者在您选择的编辑器中包含一些模板是一个更灵活的解决方案。

    在组织方面,我们在 app/assets/javascripts 目录下添加了主干目录,并在这里为模型、视图、路由器、助手等创建了目录。这允许使用coffeescript 编写主干,而无需任何宝石。我们使用 jasmine 和 jasminerice gem 来测试我们的主干代码,使用 coffeescript 和 haml 来测试fixture(它们位于 spec/javascripts 目录中}。

    至于模板,它们都是在我们的控制器中渲染到标题中的rails view partials。 Backbone 通过 id 查找它们并从那里使用它们。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      我刚刚得到消息,商业社区平台xing.com正在构建这样一个gem。

      查看 github 上的存储库:https://github.com/xing/slouch

      它还没有记录,但我认为应该很容易与构建它的人取得联系。

      【讨论】:

        猜你喜欢
        • 2012-01-10
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        • 2011-04-02
        • 1970-01-01
        • 1970-01-01
        • 2013-12-17
        • 1970-01-01
        相关资源
        最近更新 更多