Javascript AngularJS与服务器端渲染

Javascript AngularJS与服务器端渲染,javascript,asp.net-mvc,angularjs,model-view-controller,mean-stack,Javascript,Asp.net Mvc,Angularjs,Model View Controller,Mean Stack,前几天,我的一位同事在工作中提出了一个挑战。问题:解决人力资源管理中的一个常见问题,即为项目分配ppl。有一个警告是,我们必须使用我们两人都没有使用过的技术。因此,我们开始使用平均堆栈构建这个项目。到目前为止,这是一次有趣的学习经历,但我一直在想 在什么情况下,我们决定服务器端MVC呈现优于客户端MVC呈现。我们处理的大多数客户已经在某处运行了一个IIS实例,因此我们将使用asp.net MVC,它显然将在服务器端执行大部分HTML呈现。即使将angular与node结合使用,HTML呈现也是服

前几天,我的一位同事在工作中提出了一个挑战。问题:解决人力资源管理中的一个常见问题,即为项目分配ppl。有一个警告是,我们必须使用我们两人都没有使用过的技术。因此,我们开始使用平均堆栈构建这个项目。到目前为止,这是一次有趣的学习经历,但我一直在想

在什么情况下,我们决定服务器端MVC呈现优于客户端MVC呈现。我们处理的大多数客户已经在某处运行了一个IIS实例,因此我们将使用asp.net MVC,它显然将在服务器端执行大部分HTML呈现。即使将angular与node结合使用,HTML呈现也是服务器端的

但是如果我们将angular与IIS结合起来,我们就可以完成完整的客户端HTML呈现。其他人在什么时候决定使用客户端与服务器HTML呈现?是否存在移动平台速度缓慢的担忧

社区认为每种情况的利弊是什么


谢谢你的想法

我将客户机和服务器完全分离。我的服务器堆栈依赖于PHP(使用PDO和PHPASS)和MySQL进行持久化。在我看来,主要的优势是视图/表示与服务器端逻辑完全分离。在我的应用程序中非常清楚,PHP生成数据并返回JSON格式的数据,并接受JSON格式的参数,但与显示无关(它只创建易于在前端解析的数据结构)

在前端,我使用AngularJS、UI引导(引导的角度包装)、Google Maps V3 Javascript api(包装在角度指令中)和D3js(再次包装在角度指令中)

我工作过的几个网站在手机上没有遇到任何问题。。。即使在前端进行一些相当繁重的数据处理时。。。我在客户端代码中进行了所有过滤和聚合,用于在地图上显示可过滤标记,并绘制一些图表。不幸的是,我目前所指的应用程序距离上线还有一周左右,所以我无法显示链接

这是我的主站点,但它不依赖于任何PHP,因此所有这些都是有角度的:

你也可以查看公文包网站,我用AngularJS做了所有这些,没有服务器端代码。确实依赖数据库但仍为WIP的站点是

最长的延迟仍然是在gzip后获取60kb范围内的初始数据。在手机上,谷歌地图拖慢了很多东西,CSS动画也不是很流畅/快速,但一切都可以使用

另一个好处是,如果在某个时候我认为AngularJS不是一个好办法,或者客户端想要一个本地应用程序,那么服务器端代码完全可以重复使用,无需修改


我看到的唯一不好的一面是,如果客户想要导出视图,我真的没有一个好的方法来这样做。。。我最近使用PHPExcel库将数据输出为XLSX文件,但在图表等方面。我的服务器代码中没有什么是如此奇特的,如果需要的话,需要大修。也就是说,我不认为这是真正的问题,让打印机友好的页面“打印成PDF”无法解决。

我个人喜欢,但觉得上面的答案非常固执己见。我一直在努力解决这样一个事实:服务器端渲染要快得多,而且永远如此,除非客户端是一台超级计算机,或者浏览器在较新的计算机上使用现代GPU功能会突然超过服务器将演示视图与数据(HTML模板和内容)合并的能力。老实说,大多数“小型”甚至是中等规模的网站都不太关心性能,所以给他们更多的权力——随心所欲!如果你问这个问题,那么你可能会关心是否有商业案例来推动它。我能想到的与此选择相关的最新的、最大的、记录良好的案例研究是。*忘了提及:服务器还受益于能够缓存合并结果,因为客户端模板总是必须执行合并。嗨,Eric,这些都是好的方面。老实说,由于你提到的一些原因,我觉得自己不敢像以前那样回答。我之所以决定发布这个答案,是因为我最近一直非常关注移动开发,在一些案例中,我决定让前端做更多的工作,以避免往返(因为在移动设备上,这些可能会花费大量时间)。事实证明,对于我的案例(小型或中型工作),即使在移动平台上,一切都表现得相当好。也就是说,如果我在做一个企业级的项目,我不会给出这个建议。我只是访问并关闭了javascript。我被一张空白的纸给弄糊涂了。这就是当谷歌试图用机器人访问你的网页时,它是如何看到你的网页的。我可以看到一些源代码,但实际内容却不见踪影。这是一个重大问题。