单页应用程序众所周知。但PageAx似乎鲜为人知。我在学习MVC时意外地偶然发现了它,到目前为止它对我来说效果很好。
(注意:我知道这个主题可能被视为“无法回答”和“应该被关闭”但我觉得这是一个尚未涵盖的重要主题。请注意,这是单页应用程序与PageAx(不是Ajax)。我正在寻找利益/劣势类型的讨论。我正在组建名称“PageAx”,因为我没有找到更好的术语。)
SPA - 通过Ajax与控制器通信并返回Json。
PageAx - 通过Ajax与控制器通信并返回替换分区的部分视图。
以上是我所看到的PageAx的好处,而不是SPA:
客户端几乎没有JavaScript。
我发现部分视图很容易在服务器端写入。
SPA对PageAx的好处:
PageAx优于SPA的缺点:
稍微大一点的有效载荷(但我怀疑最终用户是否可以辨别。)
我想不出任何其他。
SPA对PageAx的缺点:
所以要重新回答这个问题,SPA对PageAx有什么优势吗?这个问题的基本原因是我开始了另一个网络项目,需要决定采用哪种方式。
答案 0 :(得分:2)
这取决于您的应用程序的复杂程度。
返回JSON是有益的,因为嘿 - 这意味着您拥有一个可以在移动应用程序或桌面客户端中重用的完整API。即使您后来决定完全重新执行前端,您也将拥有一个可立即使用的后端来编写代码。
此外,如果您的网络应用程序具有高度动态性和交互性,则替换部分视图可能还不够。您可能希望更好地控制转换(例如,为它们设置动画)。例如,请参阅Medium-Style Page Transitions:您无法使用部分AJAX视图执行此类操作。
另一方面,如果这种灵活性不能为您带来任何好处,那么在服务器上呈现部分视图可能对您非常有用。这是David from 37signals blogging about it。他称这种方法为SJR(服务器生成的JavaScript响应):
这并不意味着没有地方可以在服务器上生成JSON并在客户端上生成视图。我们这样做是为了少数情况,其中UI保真度非常高并且保持了很多视图状态,就像我们的日历一样。当需要该路线时,我们使用Sam优秀的Eco模板系统(想想用于CoffeeScript的ERB)。
如果您的网络应用程序都是高保真UI,那么一路走这条路是完全合法的。你付出了高昂的代价来买自己喜欢的东西。没有汗水。但是如果你的应用程序更像是Basecamp或Github,或者网络上的大多数应用程序都以其基于文档的根源而自豪,那么你真的应该张开双臂拥抱SJR。