【问题标题】:Do I really need an MVC framework like Backbone.js or Ember.js in Rails for a single page app? [closed]我真的需要一个 MVC 框架,如 Rails 中的 Backbone.js 或 Ember.js 用于单页应用程序吗? [关闭]
【发布时间】:2012-03-01 20:09:11
【问题描述】:

个人觉得 Coffeescript 还可以,但我宁愿它是我的 Rails 应用程序中的支持者,而不是大部分逻辑。据我所知,在 Rails 中使用 Backbone.js 或 Spine.js 时,您仍然需要重复很多逻辑。难道我不能从这些框架中获得好处,或者只使用 rack-pjax 来制作一个本质上是带有 js 的单页面应用程序以进行实时更新吗?

【问题讨论】:

  • “你需要”吗?不,Javascript 过去和现在都是在没有 MVC 的情况下编写的。会不会有好处?可能。对你来说是不是矫枉过正?除了你,没有人能说。
  • 没有,还有其他选择,App Engine、Pyjamas、Cappuccino。单页 Web 应用程序通常使用更大的框架来实现。当然,如果自己编写更容易,那么学习一个就可以了!或者,如果单页应用程序相对简单,只需使用 javascript 和 ajax。

标签: ruby-on-rails backbone.js ember.js spine.js pjax


【解决方案1】:

你想达到什么目的?没有更多的页面刷新?在这种情况下 rack-pjax 应该可以工作。如果您想要更快的速度或响应式 UI,那么恐怕这不是一个好的解决方案。

单页应用程序是 imo 首选,因为它严重降低了服务器上的负载和复杂性 + 在 vi​​ewlogic 和 serverlogic 之间有一个很好的抽象。

您的服务器基本上是一个 API,而您的客户端会将所有 API 数据呈现给浏览器。这样,服务器就大大简化了,要做的工作也少了很多。 (赢!)

在客户端我们也可以看到很多改进。如果操作正确,它会根据对数据所做的事件和状态更改不断地重新呈现自己。这种方法可以减少 UI 层中的耦合(和重复),并为用户提供更具响应性的 UI。 (赢!)

如果你不太在意,那就继续使用 pjax :)

请记住,尽管使用 JS 前端将现有的服务器端视图渲染应用程序重写为单页应用程序是一项棘手的工作。它可能最终会进行重大改写。您还可以尝试在 JS 前端中仅编写部分页面。

【讨论】:

  • 客户端渲染通常不应取代服务器端渲染;只镜像它。除非您绝对不关心旧版浏览器和搜索机器人是否可以抓取。
  • 现在有像github.com/airbnb/rendr 这样的解决方案可以处理这些情况。还没用过。
  • 这取决于您的要求。对于内容繁重的内容,是的,它应该反映(这就是为什么 pjax 更好的原因,我就是那种情况)。如果它是一个网络应用程序,请使用旧版浏览器或 seo。没必要。不再支持大多数旧浏览器。这是一个过时的论点。
【解决方案2】:

虽然 rack-pjax 确实会阻止浏览器在每次请求时刷新页面,但服务器仍会在每次请求时发送整个 HTML 页面。如果你的目标是一个没有页面刷新的“单页面”应用程序,rack-pjax 可以工作,但如果你使用处理 JSON 而不是加载的框架,你将节省大量带宽并拥有一个响应速度更快的应用程序整个页面。

对于一个简单的应用程序,我建议从 Backbone 或 Spine 之类的东西开始。对于更复杂的应用程序,您很快就会发现自己使用那些较小的框架编写了大量样板代码,您最好让 Ember 或 Cappuccino 之类的东西为您处理大部分繁重的工作。

如果您想要一个单页应用程序,那么您的部分或大部分逻辑将位于前端,可以直接用 javascript 编写,也可以用 coffeescript 编写并编译为 javascript。当然,您仍然需要在服务器上使用某些逻辑(例如验证......始终假设,即使在您的 JS 代码中使用验证逻辑,人们可以并且将会向服务器发送错误数据)。

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 2012-05-31
    • 1970-01-01
    • 2012-12-29
    • 2011-03-23
    • 2014-05-28
    • 1970-01-01
    • 2013-01-05
    • 2015-10-23
    相关资源
    最近更新 更多