MVVM究竟怎么掌握

qq14923349 2017-05-04 08:53:52
学了1周多一点,感觉是入门了,但是网上很多对该模型的看法又不一样,model一些人说可以涉及业务,一些人说model就是数据,大家有没相关资料或者书籍,或者自己的见解都说说吧。
...全文
456 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq14923349 2017-05-25
  • 打赏
  • 举报
回复
已入门 谢谢各位
mirrorspace 2017-05-12
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
因为你把帖子发在了 asp.net 论坛,我就假设你是针对 asp.net 来问的。 从上面我举得第一个例子,你就可以看出,我说的这些只有可能在开发前端应用的时候才考虑(因为我说的全都是跟用户大量、频繁交互相关的),而根本不是什么 asp.net 服务器端去绑定 html 的那点东西。 所以你在学习 mvvm 时首先要搞明白这个分水岭,以免被“自己”蒙在鼓里。纠结asp.net 端生成 html 文本输出是否快、是否有另外一种 HtmlHelper 绑定语法,或者是什么新的语法,其实都没有太大的技术前途。微软的 asp.net 在最近10年都在抄开源的小项目的时髦做法,但是每一次都比人家晚个5、6年,等对手玩儿剩下了、它们自己都已经证明需要革新的时候微软才推出一个模仿人家几年前的语法的东西来卖给自己的程序员。 如果你满脑子都是 asp.net 服务器端编程,绝不要纠结 mvvm,它是前端的。服务器端要专心做好数据服务,而跟界面 DOM 毫无牵连。实际上服务器端 mvc 编程也没有必要,对于已经把页面设计精力放到前端的人,实际上在 asp.net 程序端做好一个最静态的 html 简单绑定就可以了(因为90%的功夫都在前端)。
我还是在使用CSHTML页面.因为母版页很方便使用.如果想弄成全前端页面.后台只提供数据那种的.前端不方便了就, 这如何是好
  • 打赏
  • 举报
回复
因为你把帖子发在了 asp.net 论坛,我就假设你是针对 asp.net 来问的。 从上面我举得第一个例子,你就可以看出,我说的这些只有可能在开发前端应用的时候才考虑(因为我说的全都是跟用户大量、频繁交互相关的),而根本不是什么 asp.net 服务器端去绑定 html 的那点东西。 所以你在学习 mvvm 时首先要搞明白这个分水岭,以免被“自己”蒙在鼓里。纠结asp.net 端生成 html 文本输出是否快、是否有另外一种 HtmlHelper 绑定语法,或者是什么新的语法,其实都没有太大的技术前途。微软的 asp.net 在最近10年都在抄开源的小项目的时髦做法,但是每一次都比人家晚个5、6年,等对手玩儿剩下了、它们自己都已经证明需要革新的时候微软才推出一个模仿人家几年前的语法的东西来卖给自己的程序员。 如果你满脑子都是 asp.net 服务器端编程,绝不要纠结 mvvm,它是前端的。服务器端要专心做好数据服务,而跟界面 DOM 毫无牵连。实际上服务器端 mvc 编程也没有必要,对于已经把页面设计精力放到前端的人,实际上在 asp.net 程序端做好一个最静态的 html 简单绑定就可以了(因为90%的功夫都在前端)。
  • 打赏
  • 举报
回复
就好象缓存系统的设计并不是说“只要是把数据放到内存就叫缓存”,而是要非常合理和大量地使用 CacheDependency 机制,实际上 MVVM 其真正的技术点也不在于表面。如果只知道关心表面而忽略了真正的设计技术,反而是会产生极低的运行效率、让使用者最终放弃它。 现在的 web 服务器端编程方式,例如 asp.net 现在的方式,根本不可能采取 MVVM 框架。因为它们也就是整个绑定一下 html 模板,然后就要尽快把产生的 html 发给客户端,它根本不针对丰富用户交互来设计。所以 mvvm 只可能用到前端工具中,例如 typescript 所针对的那个范围。假设你说你要用 c# 来编写 asp.net 页面的 mvvm 代码,我根本不信。c# 顶多也就是弄个什么单向的绑定 html 代码的 mvc,最多是如此了。现在的丰富交互操作的代码使用前端开发模式,而不是一遍遍刷新页面的模式,所以c# 所涉及到的这一层它其实没有什么交互设计方面的内涵,并没有什么用处。 有的人说“产生 html 代码的速度大大加快了”,其实这是因为它没有内涵了,只拿一个 Hello World 来做测试。而真正的类似 c/s 桌面应用一样的富交互操作 web 应用开发已经真正使用前端技术了,此时还纠结 asp.net 页面产生 html 的“速度”或者“模式”就没有必要了。所以纠结 asp.net 如何处理 html 生成方式并不重要了,因为页面代码设计的难点已经根本不在这里。
  • 打赏
  • 举报
回复
举几个例子: 1. 假设视图的数据结构模型(VM)中有属性 XX,有3个界面从它绑定,现在假设写
for(var i=0; i<10; ++i)
    this.XX = i;
那么界面上应该看到连续变化呢?还是只看到最后的9相关的界面呢? 应该只看到最后的状态。框架帮你来控制和判断什么时候 UI 应该刷新、什么时候是你的程序修改属性但是不刷新 UI。 2. 假设某个 Autocompleted 在用户录入快速改变时相关的下拉列表对应的数据数组应该查询远程服务来刷新,你的框架应该可以有一个设置,让这个属性改变事件推迟0.5秒钟,当没有改变时才触发。 3. 假设有几个界面是根据属性X 来自动绑定、自动产生的,但是这个属性 X 其实它关联到另外两个属性 Y 和 Z,那么当 Y 或者 Z 频繁改变时,上述1应该成立,也就是说仅当 UI 需要刷新时才自动重算 X 并且自动更新绑定到 X 的那些界面。 还有一些实例我就不费劲去列举了。从这里就能看到,框架就是一些成熟的机制,几十倍地提高你的前端系统的效率。有的人之关系最基本的“概念”,似乎只要是有绑定就算是 mvc 或者 mvvm,这并没有深入实际。真正的知识点都不在皮毛。 就好象缓存系统的设计并不是说“只要是把数据放到内存就叫缓存,而是非常合理和大量地使用 CacheDependency 机制”,这个 MVVM 也是如此,它的技术就在于大量使用 V 和 数据VM 双向绑定机制时、框架能比你自己写的那一堆双向绑定MVP 代码提高几十倍效率,这时候才值得使用 MVVM。 其实说到这里你就能看出来,不深入实践框架的时候往往根本不能理解框架,只能看到最表面的那点表象。
sxf359 2017-05-10
  • 打赏
  • 举报
回复
MVVM通俗的讲就是字服务器端获取的数据在客户端用JS的形式呈现到页面上。不要过多纠结理论上的东西,用这个目的还是为了减少代码量,更好的和用户交互。我用的是bootstrap+knockoutjs的框架。如何使用,看官方文档。 knockoutjs : http://knockoutjs.com/ bootstrap: http://getbootstrap.com/
qq14923349 2017-05-09
  • 打赏
  • 举报
回复
引用 1楼LeonCv 的回复:
没看懂,你的问题是mvvm,表述是MVC,model是实体类,和数据库是直接挂钩的,viewmodel自如其名,只是为了做验证之类的,有时候也需要将实体类整合起来,实现model binding,和data transfter object 比较类似
相关的资料有没有推荐的,控件属性和事件不熟该看些什么资料?
正怒月神 版主 2017-05-05
  • 打赏
  • 举报
回复
MVVM中,一般来说model不涉及业务。 但是如果有些人希望和ddd领域驱动混在一起,那就说不清了。
x80819092 2017-05-05
  • 打赏
  • 举报
回复
自己多写几个项目就能分清楚什么是什么了
x80819092 2017-05-05
  • 打赏
  • 举报
回复
没看懂,你的问题是mvvm,表述是MVC,model是实体类,和数据库是直接挂钩的,viewmodel自如其名,只是为了做验证之类的,有时候也需要将实体类整合起来,实现model binding,和data transfter object 比较类似
在Windows系统中,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS中的经典DEMO中,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目中,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大中型WPF项目中必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程中,赵老师带领你在WPF中,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手中“复活”。在课程中,赵老师会详细讲解WPF和MVVM中的各种技巧,让你从此爱上WPF+MVVM编程。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧