24

我曾经使用 MVC 3 Razor 引擎来渲染页面。有时我不得不使用 AJAX 调用来传输 Razor 渲染的 HTML 并使用 JQuery 将其插入到页面中。随着新项目的开始,我们确实考虑使用对我们来说新的 MVC 4 单页应用程序框架。我第一眼看到它,让我感觉很复杂:一方面,它意味着你的所有数据都由 JSON 传输,客户端完成所有工作来渲染它们并编码一些与 UI 相关的逻辑,这对服务器和网络来说非常有用表现。另一方面,客户端(HTML + JavaScript)变得更加沉重,其中包含一堆魔术字符串和隐藏的关系,这似乎很难维护。我们习惯了 VS 智能感知,类型安全。

我想知道与 Razor 相比,使用 SPA 有什么优点和缺点,除了我在这里提到的这个明显的优点吗?谢谢

4

2 回答 2

21

Razor 是一种基于服务器的技术,其中 SPA(单页应用程序)是一种在客户端(Web 浏览器)上使用的架构方法。两者可以一起使用。

从高层次来看,SPA 将渲染和数据检索移至客户端。Web 服务器成为位于数据库前面的服务层。MVC 模式在使用 SPA 时效果最好。可以使用 Knockout.js 和 Backbone.js 等框架。最终结果是丰富的响应式桌面体验。

要实现这一点,您需要成为一名后裔 javascript 程序员或愿意学习 javascript。

是的,它正在将业务需求从 C# 转移到 javascript。在 Visual Studio 中,javascript 的智能感知有限。要对您的 javascript 有信心,您需要依靠单元测试。好的一面是丰富的用户体验(想想 gmail 或谷歌地图)。

于 2012-05-10T15:53:03.877 回答
4

我认为听起来您已经相当了解这里的大多数权衡;您将通过 SPA 减少网络负载,并将处理措施转移到客户端。但是,您将增加代码的复杂性,并使轻松维护系统变得更加困难(仅仅是因为复杂性增加 - 而不是因为 SPA 中固有的任何架构问题)。

要记住的另一件事是兼容性。我在对您的问题的评论中提到“错误选择”的原因是,为了让禁用 Javascript 的人可以使用该网站,您仍然需要提供常规的整页视图。为了SEO,这也是一个好主意;爬虫将以禁用 JS 的用户身份浏览您的网站,然后可以索引您的网站。然后站点应该正确处理这些传入的 URL,以便那些启用 JS 的人会发现自己在您的 SPA 中查看相同的内容(而不是被不必要地转储到“无 JS”视图中)。

我将提到其他一些可能对上述内容有所帮助的可能性,但它打破了 SPA 的理想;也就是说,在某些地方使用 Ajax 加载的部分,而不是 JSON 数据。例如,假设您在网站上有一个典型的“联系电子邮件”表单;您希望它在 SPA 的上下文中加载,但通过 AJAX 加载部分可能更容易做到这一点。(当然,是的;您可以使用 JSON 对象来描述要在电子邮件表单中显示的字段)。

也可能存在比“数据”更“内容”的内容,您可能仍希望通过部分和 Ajax 加载这些内容。


SPA 绝对是一个有趣的项目,我将自己部署一个。我在其中混合使用了 JSON 和部分,但这可能不是您自己的选择。

于 2012-05-10T15:12:59.107 回答