我是否真的需要像Rails中的Backbone.js或Ember.js这样的MVC框架来构建单页应用程序?

时间:2012-02-11 01:35:11

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

个人Coffeescript没问题,但我宁愿它是我的Rails应用程序中的支持玩家,而不是大多数逻辑。从我所看到的,在Rails中使用Backbone.js或Spine.js时,你仍然需要复制很多逻辑。我是否可以通过rack-pjax获得这些框架的好处,或者使用js实现基本上单页应用程序的实时更新?

2 个答案:

答案 0 :(得分:1)

那么你想要实现什么?没有更多页面刷新?在那种情况下,rack-pjax应该可以工作。如果你想要更高的速度或响应式用户界面,那么我担心这不是一个好的解决方案。

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

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

在客户端,我们也可以看到很多改进。如果做得好,它会根据事件和对数据的状态变化不断重新渲染自己。这种方法可以减少UI层中的耦合(和重复),并为用户提供响应更快的UI。 (赢!)

如果您对此不太在意,请继续使用pjax:)

请记住,虽然使用JS前端将现有服务器端视图呈现应用程序重写为单个页面应用程序是一件棘手的事情。它可能最终会被重大改写。您还可以尝试在JS前端中编写部分页面。

答案 1 :(得分:0)

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

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

如果你想要一个单页面的应用程序,那么你的部分或大部分逻辑将会出现在前端,可以直接用javascript编写,也可以用coffeescript编写并编译成javascript。当然,你仍然需要在服务器上使用某些逻辑(比如验证..总是假设,即使你的JS代码中有验证逻辑,人们也可以并且会将不良数据发送到服务器)。