【问题标题】:ASP.NET MVC 5 vs. AngularJS / ASP.NET WebAPI [closed]ASP.NET MVC 5 与 AngularJS / ASP.NET WebAPI [关闭]
【发布时间】:2014-05-29 09:23:45
【问题描述】:

我目前正在评估用于在我的公司中创建未来 Web 应用程序的编程模型。因此,我将在 ASP.NET MVC 5(带有 Razor 视图)和带有 ASP.NET WebAPI 的 AngularJS 之间做出决定。这两种编程模型的优缺点是什么?

【问题讨论】:

  • 好吧...如果您要将 AngularJS 锚定到 ASP.NET...您实际上并没有给它一个公平的比较。就像您希望将 Javascript 从 Angular 中移除,但这并不是它的本意。 Angular 旨在成为您的客户端框架,并且在您使用非常少的服务器端模板时效果最佳:simple-talk.com/blogs/2013/10/16/…。诸如身份验证之类的事情是有道理的,但不要理会,直接使用 .NET 并使用它为 Angular 创建一个 API 层。
  • 我认为您真正需要的只是带有 ASP.NET WebAPI 的 AngularJS。我认为它有两全其美。我尝试将 MVC 与 AngularJS 混合使用,当我遇到问题时体验不是很好,所以建议不要陷入这个陷阱。我对这种方法怀念的一件事是带有 Razor 引擎的 MVC 可以提供的基于设备的视图。一定有办法克服这个问题,但我还没有进行足够的实验。
  • 我在 Angular 上工作了短短几个月(虽然看起来像是永远),但我永远不会再回到 Razor。你使用 Angular 的次数越多,你就越会欣赏它——灵活性和强大,有时感觉就像魔法一样。我应该说 Web API 不能很好地与 Angular 配合使用,至少在 POST 表单上是这样,但这是可以解决的。对于 C# 程序员的语法而言,这不是一个简单的过渡,因为 javascript 不是一种强类型语言。但是当你克服这个障碍时,你会开始欣赏 Angular。
  • Razor 即使在模板引擎中也是一个可怕的东西。在任何模板引擎(Jade、车把、剃须刀等)上使用 Angular 时,您会注意到生产力的显着提高。使用提供 JSON 的后端(可以是 web-api、node-express 或 PHP)和 angular 前端。需要注意的是,淘汰赛不如 angular.... 一切顺利...
  • @BrianVanderbusch 不太清楚你在说什么。后端根本不重要。它可以是任何东西。他说他将使用 ASP.NET 作为后端,使用 Angular 作为客户端前端。 Angular 仍然需要调用服务器以获取数据。这与不给 Angular 一个公平的比较无关。

标签: asp.net asp.net-mvc angularjs


【解决方案1】:

我的 2 美分。我个人更喜欢纯 HTML 视图,一个完全有角度的前端以及一个 Web API/EF/SQL Server 后端,基本上没有 Razor。 Razor 是帮助程序员渲染 HTML 的抽象,现在每个人都得出结论,删除这些抽象是一个更好的主意,因此 ASP.NET 从 Web 表单演变为 MVC 等。对于开发人员来说,这并不难掌握 HTML 并使用 Angular 前端,此外这使 UI 设计师的工作更轻松,他们拥有纯 HTML 和 JSON/Javascript,他们不需要去理解 MVC、Razor、控制器和动作。我们过去完全在 MVC 上工作,在我们最新的项目中,我们转移到了 Web API 后端和 Angular 前端,我们注意到我们的 UI 设计师的工作效率已经大大提高。

【讨论】:

  • 我想补充一点,使用 Angular 可以动态更新模板,这显然很棒
  • 是的,在开发更具动态性和响应性的前端与开发成本之间,确实没有竞争。
  • @user189756 使用 Web API 方法时,您如何将 HTML 页面交付给客户端?
  • @Yoav 这是一个旧答案,但当时它是一个带有单个控制器的 MVC 主机。
  • @Yoav 正是。但我要补充一点,另一个答案也很好,尤其是考虑到 SEO 等因素。
【解决方案2】:

我相信你无法比较。 AngularJS 是一个单页应用程序 (SPA) 框架,而 ASP.Net MVC 使用在页面之间导航的标准模型。是否要构建 SPA 取决于以下因素:

  • 你想要搜索引擎优化。这些 JS 丰富的框架大多支持有限。
  • 如何将应用构建为 SPA 或多个 SPA。
  • 从类型安全的 C# 语言到 JavaScript 编程是一个挑战。
  • 学习 AngularJS 并有效地使用它。

我们使用标准 MVC 5 剃须刀视图来设置初始 AngularJS 视图,因此您甚至可以在需要时将它们组合在一起。

请参阅此答案Can you use AngularJS with Parse.com? 以获取更多上下文。

【讨论】:

  • "...而 ASP.Net MVC 使用在页面之间导航的标准模型。"这完全是错误的。 MVC 应用程序 - 使用 razor - 可以很容易地设计为 SPA。
  • AngularJS 不限于 SPA,您可以很好地使用 Angular 和深度链接构建一个多页面网站......
  • AngularJS 不是 SPA。您可以像 SPA 一样使用它,但这不是自动的或必要的。必须添加路由依赖项 ng-route 才能获得路由。 AngularJS 是不可思议的,可以成为一个很棒的 SPA,但是说 AngularJS = SPA 是很愚蠢的。
  • TypeScript 是类型安全 js 的不错选择。
  • AngularJS 由 Google 制作。如果它缺乏 SEO,他们就做错了。
猜你喜欢
  • 2012-07-06
  • 1970-01-01
  • 2015-07-17
  • 2015-02-18
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
相关资源
最近更新 更多