2011-07-31 17 views
2

看过knockoutjs后,它看起来像是直接在页面中定义视图和模型。例如,您的cshtml文件可以共享asp.net mvc视图和knockoutjs视图。这似乎是,如果你的应用程序不是JavaScript密集型的,就没有必要使用knockoutjs或类似的东西。我看着这个错误的方式吗? knockoutjs框架会替换您的asp.net mvc框架视图/模型吗?knockoutjs或类似库的视图/模型是否应该取代asp.net mvc views/models?

回答

5

Knockoutjs是客户端MVVM框架。通用目的是直接使用那些“onclick”,“onchange”,“onblur”事件处理程序,并通过MVVM模式定义的方式与UI一起操作 - 通过模型。从Knockoutjs.com

通过封装数据和行为到视图模型,你要在其上构建复杂的用户界面,而不在事件处理程序和手动更新DOM的纠结迷路干净的,可扩展的基础。

我同意你的看法,如果你的客户端已经得到一些简单的表单来填写并提交给服务器,那么使用knockoutjs可能会造成设计开销。但是,如果有计算,UI更新和相互依赖的输入,它们应该与对方的选定值同步运行,那么knockoutjs将提供更简洁的方式来实现UI上的预期结果。

但这些都是客户端问题。它们并不意味着要替换服务器端的模型。您需要服务器端的模型来执行存储库操作,业务验证和案例。好的服务器永远不依赖于客户端上的任何东西 - 它是独立的角色,可以完成应用程序所需的所有功能。由于knockoutjs是库,使您可以在客户端使用模型,在asp.net中,mvc视图在服务器上定义了模型以简化服务器特定的操作。从技术上讲,对于当前版本的asp.net mvc,您需要查看模型来生成knockoutjs。所以如果你需要为你的网络编写服务器端,你需要在它上面使用不同的模型。通过设计,他们可能像knockoutjs,但它们不能彼此替代。

而对于意见 - 比较asp.net mvc视图和knockoutjs的是错误的。 knockoutjs视图只是asp.net mvc定义的一般“视图”的具体实现。 asp.net mvc没有定义任何特定的“视图”,它通常是用户在与服务器交互之后在浏览器上收到的内容。是的,如果您使用knockoutjs,那么您生成的视图当然会包含knockoutjs特定的标记。

+0

感谢您的好评。 – Xaisoft

相关问题