我已经在客户端和服务器之间进行了纯粹的分离。我的服务器堆栈依赖 PHP(使用 PDO 和 ph-pass)和 MySQL 来实现持久性。在我看来,主要优势是视图/表示与服务器端逻辑的完全解耦。在我的应用程序中,PHP 生成数据并将其返回为 JSON 格式并接受 JSON 格式的参数是绝对清楚的,但与显示无关(它只是创建易于在前端解析的数据结构)。
在前端,我使用 AngularJS、UI Bootstrap(用于引导的角度包装器)、Google Maps V3 Javascript api(包装在 Angular 指令中)和 D3js(再次包装在 Angular 指令中)。
我工作过的几个网站在移动设备上并没有真正遇到任何问题......即使在前端进行了一些非常繁重的数据处理......我在客户端代码中进行了所有过滤和一些聚合以显示地图上的可过滤标记并绘制一些图表。不幸的是,我目前所指的应用程序距离上线大约一周,所以我无法显示链接 ATM。
这是我的主站点,这个站点不依赖于任何 PHP,所以所有 Angular:
http: //www.intellectual-tech.com
您还可以查看投资组合网站和http://www.shanklandfinancial.com我只用 AngularJS 完成了所有这些工作,没有服务器端代码。依赖数据库但仍处于 WIP 状态的站点是http://www.eat-data.org
最长的延迟仍然是获取 gzip 压缩后 60kb 范围内的初始数据。在移动设备上,谷歌地图拖了很多东西,CSS 动画不流畅/快速,但一切仍然可用。
另一个好处是,如果在某些时候我认为 AngularJS 不是要走的路,或者客户端想要一个本机应用程序,服务器端代码完全可以重复使用而无需修改。
我真正看到的唯一缺点是,如果客户端想要导出视图,我真的没有很好的方法来做到这一点......我最近使用 PHPExcel 库将数据输出为 XLSX 文件,但就图表等。我的服务器代码中没有什么是花哨的,如果需要的话,需要大修。也就是说,我认为这不是将打印友好页面“打印为 PDF”无法解决的真正问题。