Asp.net mvc 4 Angular.js和ASP.NET MVC 4
我有一个ASP.NETMVC4项目,我在一个架构上决定使用Angular.js或Knock.js的JavaScript框架或库。我目前倾向于使用Angular.js而不是Knockout.js,但不想在项目开发过程中发现我犯了一个错误 以下是一些背景:Asp.net mvc 4 Angular.js和ASP.NET MVC 4,asp.net-mvc-4,angularjs,knockout.js,javascript,javascript-framework,Asp.net Mvc 4,Angularjs,Knockout.js,Javascript,Javascript Framework,我有一个ASP.NETMVC4项目,我在一个架构上决定使用Angular.js或Knock.js的JavaScript框架或库。我目前倾向于使用Angular.js而不是Knockout.js,但不想在项目开发过程中发现我犯了一个错误 以下是一些背景: 我们需要双向模型数据绑定 我们需要测试视图的能力。我希望能够进行端到端的单元测试。此外,我们正在使用持续集成 “保存更改”功能。i、 e.如果用户在页面上进行更改,我们需要能够检测任何更改,并在用户离开页面之前提示用户保存更改 “通知”功能。i
- 我们需要双向模型数据绑定
- 我们需要测试视图的能力。我希望能够进行端到端的单元测试。此外,我们正在使用持续集成李>
- “保存更改”功能。i、 e.如果用户在页面上进行更改,我们需要能够检测任何更改,并在用户离开页面之前提示用户保存更改
- “通知”功能。i、 e.用户将登录大约8小时,并需要通知和更新其他用户所做的更改(错误、数据状态更改等)
- 我们需要“证明未来”我们的应用程序。目前业务部门尚未决定是否需要支持移动设备,但我知道这只是时间问题
- 我们的团队由具有不同经验水平的开发人员组成,从初级开发人员到高级开发人员
- 目前我们的模型很复杂,可能会变得更复杂 我们还需要考虑RAD、代码重用和可维护性。
- angular是一个完整的框架-淘汰赛实际上只是关于2 方式绑定。您仍然需要其他库,如backbone.js/jquery 做你剩下的工作
- angular具有依赖注入。这非常适合添加
模拟用于测试以及为代码提供结构 - angular将普通JS变量视为$scope内的可观察变量 对象这意味着你不必以特殊的方式申报
angular的最大问题是文档。与淘汰赛相比,这是可悲的。这将增加额外的时间和成本,让您的编码器的速度。然而,一旦他们到了那里,这是目前IMHO的最佳选择。我对AngularJs没有太多的意见,但想提供一些关于淘汰赛的想法 Knockout主要是一个数据绑定库,用于将视图连接到视图模型,但除此之外并没有提供很多功能。我不建议单独使用knockout作为主库来构建复杂的基于客户端的网站 您没有提到您是否正在实现类似spa的功能(即哈希标记导航),或者您是否主要使用MVC服务器端视图(例如Razor)。如果您只是想在每页级别上快速绑定数据,我甚至会重新考虑这一点。对我来说,这两种方法(angular或knockout)都是为了增强客户端开发体验而设计的,而不是像MVC这样的服务器端方法 如果您正在考虑SPA方法,即使是部分SPA方法,您可能需要一些框架来提供对视图激活生命周期的某种程度的控制 就数据绑定能力和可靠性而言,我相信淘汰制。我一直在广泛地使用它,并且变得非常喜欢它。如果你喜欢击倒的感觉,你可能想看看。Durandal是一个不错的框架,能够满足许多“spa”web项目的需要。它是一个客户端框架,构建在几个经过验证的库之上,包括Knockout。它的重量比角度要轻一点,而且可能更容易使用
我们正在构建一个相当大的ASP.NETMVC网站,使用Durandal和Knockout,并结合一个额外的facade,从开发的角度来看,它将更加紧密,与ASP.NETMVC的集成是直截了当的。我不建议尝试使用服务器端的淘汰功能;我只是发现限制MVVM模式的真正力量。很高兴看到这个问题引起了社区的兴趣;)为了完整起见,我最后做了以下几点: 我确实选择了AngularJS和ASP.NETMVC4,并为此感到高兴。虽然Angular有一个陡峭的学习曲线,但由于指令的力量,它是值得的
- 我们需要双向的模型数据绑定——有时候我需要设置一些来自MVC控制器的初始值。我使用了nginit属性来实现这一点
- 我们需要测试视图的能力-我按照
- “保存更改”功能-I im