2011-05-03 55 views
6

使用ASP.NET MVC:我陷入了在服务器和客户端(比如jQuery模板)上渲染我的视图的过程中。正如我听到有人说的那样,我不喜欢混合两者的想法。例如,有人说他们会渲染服务器端的初始页面(比如一堆评论的列表),然后当添加新评论时,他们会使用客户端模板。要求在代码的两个不同区域具有相同的渲染逻辑,这让我想知道人们如何说服自己这是值得的。ASP.NET客户端与服务器视图呈现

你用什么理由决定在哪里使用?

使用ASP.NET Web窗体时,您的论点如何改变?

回答

3

人们这样做的一个原因是因为他们希望他们的网站通过搜索引擎索引,但也希望获得最佳的用户体验,所以为此编写客户端代码。考虑到你有限制和目标,你必须决定什么是有意义的。不幸的是,从技术角度来看,最具商业意义的东西似乎并不总是最有意义的。

1

服务器端渲染的一个优势是您的客户端不必使用JavaScript以使您的页面正常工作。如果您依赖于JQuery模板,则几乎不得不假设您的页面在没有JavaScript呈现的情况下不会有任何内容。对一些人来说这很重要。正如你所说,我不希望两次使用相同的渲染逻辑,因为你有冒着让它不同步的风险。

我通常更喜欢利用部分视图来生成大多数内容服务器端。使用直线HTML的页面往往会比加载后必须“构建”的页面快一点,这使得初始加载速度更快。

我们为我们的应用程序开发了一个基于事件的AJAX体系结构,它允许我们生成一段内容以响应操作的结果,并基本上将任意数量的命令发送回客户端代码说“使用这个呈现的局部视图的结果来替换ID为'X'的元素”,或者“用这个作为内容打开一个新的模式弹出对话框。”这是有益的,因为服务器端代码可以更多地控制AJAX请求的结果,而无需编写客户端代码来处理每个操作的每个意外事件。

另一方面,像这样将服务器置于控制之下意味着请求必须在客户端知道要做什么之前返回。如果您的视图渲染基本上是基于客户端的,那么您可以立即在UI中“发生”一些事情(例如立即插入新评论),从而提高网站的“感知速度”。此外,互联网连接通常是大多数网站真正的速度瓶颈,因此通过网络发送较少的数据(JSON)往往可以使事情更快。所以对于我想要非常顺利地响应用户交互的元素,我经常使用客户端渲染。如Jarrett Widman所说,在过去,搜索引擎优化也是一个大问题,如Jarrett Widman所说。但我的理解是,大多数现代搜索引擎都足够聪明,可以评估他们访问的页面的初始JavaScript,并找出加载后页面的实际外观。 Google甚至会在您的网址中推荐the use of the "shebang",以帮助他们了解如何索引由AJAX动态加载的网页。