首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular.js和ASP.NET MVC 4

Angular.js和ASP.NET MVC 4
EN

Stack Overflow用户
提问于 2013-08-13 09:14:23
回答 3查看 42.9K关注 0票数 73

我有一个ASP.NET MVC4项目,我被困在一个架构决定上,决定使用Angular.js还是Knock.js哪个JavaScript框架或库。我目前倾向于使用Angular.js而不是Knockout.js,但我不想在项目开发过程中发现我犯了一个错误。

下面是一些背景知识:

  • 我们需要双向模型数据绑定
  • 我们需要测试视图的能力。我希望能够进行端到端的单元测试。此外,我们使用的是持续集成。
  • 的“保存更改”功能。例如,如果用户在页面上进行了更改,我们需要能够检测任何更改,并在用户离开page
  • "Notifications“功能之前提示用户保存更改。例如,用户将登录大约8小时,并将需要通知和更新由其他用户所做的更改(错误,数据状态更改等)
  • 我们需要“未来证明”我们的应用程序。目前业务部门还没有决定我们是否需要支持移动设备,但我知道这只是一个时间问题。我们的团队由具有从非常初级到高级的不同经验水平的开发人员组成。我们的模型很复杂,可能会变得更复杂,因此我们还需要考虑
  • 、代码重用和maintainability

我已经阅读了优秀的答案here,并观看了Scott Allen关于Angular here的采访

因为我们不能改变我们目前的ASP.NET MVC4架构,在服务器端使用像Web API这样的东西,我在尝试用MVC4实现Angular.js时有一些concerns。这会导致我们有两个模型,一个在服务器上,一个在客户端吗?

我并不是在寻找一个关于Angular和Knockout的“哪个更好”的讨论,因为我认为它们都有自己的优缺点。我正在寻找在ASP.NET MVC4应用程序中实现JavaScript框架或库的实际代码。我需要一个解决方案,几年后我可以接受2+ :)

有什么想法或建议吗?也许答案不是敲门或角度,而是其他的JavaScript框架?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-23 06:03:37

很高兴看到这个问题是社区感兴趣的;)为了完整起见,我最后做了以下工作:

我选择了AngularJS和ASP.NET MVC4,我很高兴我这样做了。虽然Angular有一个陡峭的学习曲线,但由于指令的强大功能,它是值得的。

我们需要双向模型数据绑定--在某些情况下,我需要设置一些来自控制器的初始值。我使用ng-init属性来实现这一点。

  • 我们需要测试视图的能力-我遵循AngularJS docs测试
  • 的“保存更改”功能-我使用Angular
  • "Notifications“功能中的指令实现了这一点-我使用toastr.js和指令(Schweet)
  • 实现了这一点。我们需要”证明“我们的应用程序-我不知道谷歌对AngularJS的计划,但在使用AngularJS之后,我看不到它很快就会出现,并预计它会得到更广泛的采用:)
票数 21
EN

Stack Overflow用户

发布于 2013-08-13 10:13:29

我2美分的价值。

前言-我使用过angular和knockout。我使用的是MVVM/MVC库构建的第三个非平凡前端。

我从knockout开始,因为它的MVVM非常类似于wpf/silverlight机制。它工作得很好。教程和文档都是一流的。您的所有程序员将能够在几天内使用knockout.js,或者如果他们在.net下使用过mvvm,那么在几个小时内就可以使用它。

然而,这些天我正在使用angular,并可能会坚持使用它,原因如下。

  • angular是一个完整的框架-- knockout实际上就是双向绑定。你仍然需要像backbone.js/jquery这样的库来完成剩下的工作,
  • angular有依赖注入。它非常适合添加

  • angular将普通的JS变量视为其$scope对象中的可观察变量。这意味着您不必以特殊的方式声明它们

我不是一个铁杆粉丝,我仍然认为他们可以更多地转向MVVM架构,而不是他们目前拥有的“时髦的”MVVM/MVC混合架构。

angular最大的问题是文档。与淘汰赛相比,它是可悲的。这将增加额外的时间和成本,让您的程序员加快速度。然而,一旦他们在那里,这是目前的最佳选择IMHO。

票数 57
EN

Stack Overflow用户

发布于 2013-08-13 10:16:20

我没有太多关于AngularJs的意见,但我想提供一些关于Knockout的想法。

Knockout主要是一个用于连接视图和视图模型的数据绑定库,但实际上并没有提供更多的功能。我不建议单独使用knockout作为主库来构建一个复杂的基于客户端的网站。

您没有提到您是否正在实现类似spa的功能(例如,散列标签导航),或者您是否主要使用MVC服务器端视图(例如,Razor)。如果您只是想在每页级别上寻找快速的数据绑定,我甚至会重新考虑。对我来说,这两种方法(angular或knockout)都是为了增强客户端开发体验而设计的,而不是像MVC这样的服务器端方法。

如果您正在考虑一种SPA方法,那么您可能需要某种框架来提供对视图激活生命周期的某种程度的控制。

至于数据绑定能力和可靠性,我相信Knockout。我一直在广泛地使用它,并且变得非常喜欢它。如果你喜欢knockout的感觉,你可能想看看Durandal。Durandal是一个很好的框架,能够满足许多"spa“web项目的需求。它是一个客户端框架,构建在几个成熟的库之上,包括Knockout。它比Angular轻量级一点(很多),而且可能更容易使用。

我们正在使用Durandal和Knockout构建一个相当大的ASP.Net MVC网站,再加上一个额外的外观,以从开发的角度来加强事情,并且与ASP.Net MVC的集成是直接的。我不建议尝试使用现有的服务器端敲门砖;我只是觉得这样会限制MVVM模式的实际功能。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18199174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档