我们正在与团队讨论使用 ASP.NET MVC 构建 Web 应用程序的不同选项。一种选择是在渲染视图的任何地方都使用 MVVM(例如,knockoutjs)。方法看起来非常强大,但是需要考虑开发工作。
我希望其他人根据他们的经验(或指向一些资源)提供一些粗略的“行业标准”开发时间比较。例如,“对于一个普通的 ASP.NET Web 应用程序,使用 MVVM 平均需要 N 倍更多/更少的努力”。
我们正在与团队讨论使用 ASP.NET MVC 构建 Web 应用程序的不同选项。一种选择是在渲染视图的任何地方都使用 MVVM(例如,knockoutjs)。方法看起来非常强大,但是需要考虑开发工作。
我希望其他人根据他们的经验(或指向一些资源)提供一些粗略的“行业标准”开发时间比较。例如,“对于一个普通的 ASP.NET Web 应用程序,使用 MVVM 平均需要 N 倍更多/更少的努力”。
我发现 knockoutjs 的开发速度非常快。但是,我发现有几件事可以使它更快。
首先,是使用coffeescript 而不是javascript。(使用 web 工作台,如果您最终使用,也切换到使用 SASS for css)。但是,没有智能感知或任何东西......虽然我个人认为这不是一个问题。然而,coffeescript 比 javascript 简洁很多,并且与淘汰赛结合得非常好。
接下来是数据从 C# 到 json 到淘汰赛的转换。
通常在这里,在您的控制器中,您从数据库中获取数据(使用您最喜欢的 ORM),将其投影到 C# 视图模型,并将其传递给视图( Razor ),然后使用它并将其转换为 json 映射到淘汰视图模型。
如果您将所有这些都移到 Razor 视图中(基本上您的控制器将参数传递给视图)。然后查询数据库并在 Razor 视图中创建 C# 视图模型。然后这使开发速度更快,因为您基本上可以只编辑视图、刷新网页、编辑、刷新(无编译步骤)。
虽然写下来这听起来有点令人困惑,但实际上这样做非常简单,并且只需少量代码,您就可以非常快速地构建一些功能丰富的页面。
根据你在做什么,我会说基于淘汰赛的解决方案往往快 1->10 倍。但是,在个别情况下,asp.net 中的特定控件会使某些事情稍微容易一些,但是,在淘汰赛中复制该行为通常并没有那么多工作,更重要的是,将事情自定义为您所需要的更容易想。
我们组终于决定knockout.js
在这个时候放弃了。
的问题knockout.js
是写代码的时候不会有好的智能感知。与 MVC 中的 ViewModel 相比,这使得开发容易出错且耗时。
特别是当需要在线提交表单时,我们仍然喜欢利用DataAnnotation
可以在视图模型上设置的属性。这种做法仍然为我们节省了大量的服务器端和客户端验证时间。
但我想说knockout.js
有它的好处,因为更多的客户端编程确实改善了用户体验。如果更少的回发意味着很多,请考虑knockout
。特别是当一页上的客户端有很多东西要更改时。否则,我会简单地使用 ajax 调用并使用子句更新页面jQuery
内容success:
。
至少有一个未来的项目我想用广泛的knockout
. 毕竟这将是必要的知识。这不是很困难。只需按照网站上的好例子。