使用ASP.NET MVC:我在服务器上和客户端(比如jquery模板)中呈现我的视图之间陷入困境。我听不到有人说的话,我不喜欢将两者混合在一起的想法。例如,有些人说他们将渲染初始页面(比如一堆评论的列表)服务器端,然后当添加新评论时他们使用客户端模板。在代码的两个不同区域中具有相同渲染逻辑的要求让我想知道人们如何说服自己这是值得的。
您用什么原因决定在哪里使用?
使用ASP.NET Web窗体时,您的参数如何变化?
答案 0 :(得分:3)
人们这样做的一个原因是因为他们希望他们的网站被搜索引擎索引,但也希望获得最佳用户体验,因此为此编写客户端代码。鉴于您的约束和目标,您必须决定什么是有意义的。不幸的是,从技术角度来看,最具商业意义的并不总是最有意义。
答案 1 :(得分:2)
服务器端呈现的一个优点是您的客户端不必使用javascript来使您的页面正常运行。如果你依赖于JQuery模板,你几乎不得不假设你的页面在没有javascript的情况下呈现时没有任何内容。对某些人来说这很重要。
正如你所说,我不希望两次使用相同的渲染逻辑,因为你冒着让它失去同步的风险。
我通常更喜欢利用部分视图来生成大多数内容服务器端。具有直接HTML的页面倾向于比在加载后必须“构建”的页面更快地呈现,使初始加载更快一些。
我们为我们的应用程序开发了一个基于事件的AJAX架构,它允许我们生成一段内容以响应操作的结果,并且实质上将任意数量的命令发送回客户端代码来说明“使用此渲染的局部视图的结果替换ID为'X'的元素”,或“打开一个新的模态弹出对话框,将其作为内容”。这是有益的,因为服务器端代码可以对AJAX请求的结果进行更多控制,而无需编写客户端代码来处理每个操作的每个意外事件。
另一方面,将服务器置于这样的控制意味着请求必须在客户端知道该做什么之前返回。如果您的视图呈现主要是基于客户端的,那么您可以立即在UI中“发生”某些事情(比如将新评论插入其中),从而提高网站的“感知速度”。此外,互联网连接通常是大多数网站的真正速度瓶颈,因此通过线路发送较少的数据(JSON)通常可以使事情更快。因此,对于我想要非常顺利地响应用户交互的元素,我经常使用客户端渲染。
过去,搜索引擎优化也是一个大问题,正如Jarrett Widman所说。但我的理解是,大多数现代搜索引擎足够聪明,可以评估他们访问的页面的初始javascript,并找出页面在加载后的实际外观。 Google甚至会在您的网址中推荐the use of the "shebang",以帮助他们了解如何编制由AJAX动态加载的网页的索引。