看过knockoutjs后,它看起来像是直接在页面中定义视图和模型。例如,您的cshtml文件可以共享asp.net mvc视图和knockoutjs视图。这似乎是,如果你的应用程序不是JavaScript密集型的,就没有必要使用knockoutjs或类似的东西。我看着这个错误的方式吗? knockoutjs框架会替换您的asp.net mvc框架视图/模型吗?knockoutjs或类似库的视图/模型是否应该取代asp.net mvc views/models?
回答
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特定的标记。
- 1. MVC模式:视图是否应该引用模型
- 2. asp.net MVC应该视图模型封装域模型?
- 3. asp.net mvc视图模型和提取模型类中的数据
- 4. MVC - 此代码是否属于模型,控制器或视图?
- 5. KnockoutJs&Asp.Net MVC 4 - 多模型视图提交
- 6. 是复合模型的强类型ASP.NET MVC视图
- 7. ASP.NET视图模型替代
- 8. ASP.Net MVC强类型视图
- 9. KnockoutJS - 视图模型Abstracion
- 10. KnockoutJS失去视图模型
- 11. knockoutjs:在视图模型
- 12. Asp.net mvc数据模型或视图模型
- 13. ASP.NET MVC视图模型传递到不同的视图模型
- 14. 通过视图模型或视图助手在视图中访问数据库是否打破了MVC模式?
- 15. selectlist逻辑应该放在ASP.NET MVC,视图,模型还是控制器中?
- 16. 常规迭代器(或类似的范围/视图类)是否应该从const_iterator派生?
- 17. asp.net MVC模型项的类型是List
- 18. ASP.NET MVC 3模型和视图模型类
- 19. ASP.NET MVC - 只发布一半类型视图的模型?
- 20. ASP.NET MVC根据模型的类型加载部分视图
- 21. 强类型的MVC视图模型
- 22. ASP.NET MVC视图模型和DropDownList的
- 23. 视图模型在asp.net mvc的5
- 24. Asp.net MVC模型的视图和布局
- 25. asp.net MVC 3模型视图中的
- 26. 应该参数化ASP.NET MVC视图
- 27. 类库中的ASP.net MVC视图
- 28. 应该在哪个类(模型或控制器或视图类)中提供
- 29. Intellij:它是否具有类似eclipse的同步类型视图?
- 30. asp.net mvc强类型与多选视图模型
感谢您的好评。 – Xaisoft