就个人而言,Coffeescript 是可以的,但我宁愿它是我的 Rails 应用程序中的支持者,而不是大部分逻辑。据我所知,在 Rails 中使用 Backbone.js 或 Spine.js 时,您仍然需要重复很多逻辑。难道我不能从这些框架中获益,或者只使用 rack-pjax 来制作一个本质上是带有 js 的单页面应用程序来进行实时更新吗?
2 回答
那么你想达到什么目的?没有更多的页面刷新?在这种情况下 rack-pjax 应该可以工作。如果您想要更快的速度或响应式 UI,那么恐怕这不是一个好的解决方案。
单页应用程序是首选 imo,因为它严重降低了服务器上的负载和复杂性 + 在 viewlogic 和 serverlogic 之间有一个很好的抽象。
您的服务器基本上是一个 API,而您的客户端会将所有 API 数据呈现给浏览器。这样,服务器就大大简化了,要做的工作也少了很多。(赢!)
在客户端,我们也可以看到很多改进。如果操作正确,它会根据对数据所做的事件和状态更改不断地重新呈现自己。这种方法可以减少 UI 层中的耦合(和重复),并为用户提供更具响应性的 UI。(赢!)
如果您不太在意,请继续使用 pjax :)
请记住,尽管使用 JS 前端将现有的服务器端视图渲染应用程序重写为单页应用程序是一项棘手的工作。它可能最终会进行重大改写。您还可以尝试在 JS 前端中仅编写部分页面。
虽然 rack-pjax 确实会阻止浏览器在每次请求时刷新页面,但服务器仍然会在每次请求时发送整个 HTML 页面。如果你的目标是一个没有页面刷新的“单页”应用程序,rack-pjax 可以工作,但是如果你使用一个处理 JSON 而不是加载的框架,你将节省大量带宽并拥有一个响应速度更快的应用程序整个页面。
对于一个简单的应用程序,我建议从 Backbone 或 Spine 之类的东西开始。对于更复杂的应用程序,您会很快发现自己使用那些较小的框架编写了大量样板代码,您最好让 Ember 或 Cappuccino 之类的东西为您处理大部分繁重的工作。
如果您想要一个单页应用程序,那么您的部分或大部分逻辑将在前端,或者直接用 javascript 编写,或者用 coffeescript 编写并编译为 javascript,这是给定的。当然,您仍然需要服务器上的某些逻辑(例如验证.. 始终假设,即使在您的 JS 代码中有验证逻辑,人们可以并且将会向服务器发送错误数据)。