我真的需要像Rails中的Backbone.js或Ember.js这样的MVC框架来开发一个单页应用程序吗



就我个人而言,Coffeescript是可以的,但我宁愿它是我的Rails应用程序中的一个支持播放器,而不是大部分逻辑。据我所见,在Rails中使用Backbone.js或Spine.js时,仍然需要复制很多逻辑。我能不能不从这些框架中获得好处,或者只使用rack pjax就可以制作一个带有js的单页应用程序来进行实时更新?

你想要实现什么?不再刷新页面?在这种情况下,机架pjax应该可以工作。如果你想要更高的速度或更快的用户界面,恐怕这不是一个好的解决方案。

单页应用程序是imo的首选,因为它大大降低了服务器上的负载和复杂性;服务器逻辑。

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

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

如果您不太关心这一点,那么继续使用pjax:)

请记住,使用JS前端将现有的服务器端视图呈现应用程序重写为单页应用程序是一项棘手的业务。它可能会以一次重大重写而告终。您还可以尝试在JS前端只编写页面的一部分。

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

对于一个简单的应用程序,我建议从Backbone或Spine之类的应用程序开始。对于更复杂的应用程序,你很快就会发现自己用这些较小的框架编写了很多样板代码,你最好让Ember或Cappuccino这样的东西来承担大部分繁重的任务。

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

最新更新