ASP.NET MVC4 结合MVVM的应用初探(一)——国产大牛MVVM框架avalon应用

【前言】

长久以来,凭借一股热情,作为一个半路信佛(尚未出家)的中年野和尚,一直在自学asp.net mvcX,希望有朝一日能写出一个简单的小微企业内部使用的动态网站出来——这是我粗浅的理想。

紧跟微软是我的选择,这是因为微软太牛逼,敢于把任何复杂的东西傻瓜化(效果另论),这种牛气冲天的精神,我表示深深折服。何况我现在盗版的庞大的VisualStudio系列用着,何止一个爽字了得(VS也有express版的,懒得下)。当然,有免费的我尽量不用盗版,比如sqlserver我就只用express版……扯远了,支持正版。

【为什么MVVM】

asp.net mvc从3.0到4.0(现在5.0也出来了),感觉写网站确实比从前要方便多了。技术更新速度也挺快。尤其是mvc3让人感动地引入了razor语法,再写view时那抑制不住骚动的心,当浮一大白。

因MVC关注点分离的特性,写view时就其实有更多便利的方式可供选择,也就是说,其实用微软自己的razor语法已经很方便了,但真正实际开发时,为提高效率等,仍然迫切需要配合jquery来做好前端。而jquery近些年的大量使用,令不甘寂寞的程序员们大为光火,如你所知,程序员是最懒的一帮子人了(他们为了节省时间哪怕按毫秒记,节省操作哪怕能少点一下鼠标,废寝忘食,以变态的方式改进程序哪怕一点点进步,敬佩),他们在以“懒”推动着技术的进步。他们称用Jquery陷入了dom操作的泥淖,必须尽早拔出脚来,我们的征途是星辰大海。

于是,各种MVVM框架出来了(什么是MVVM,请度娘之),微软在asp.net mvc4中,也贴心地默认附上了knockout.js,这是微软矢志不渝搞傻瓜化的表现之一。可惜knockoutjs谈不上好用,我也大概找了一些资料,有不少东西难以理解,源码也根本看不懂。

除此之外,还有其它框架emberjs,还有高大上的angular等等,不一而足。这些东西都是好的,但对于我的征途只是门前菜地的中年野和尚来说,入门太费劲了。

【avalon】

博客园里有位大牛名叫司徒正美,他基于对knockout的深入研究(据说avalon的早期版本),写了一个MVVM框架:avalon,目前版本0.99x,我试用了一段时间,只想说四个字:牛逼死了。如果这个框架能让更多人应用,并且一统江湖千秋万代鸟生鱼汤,我还要再加四个字:请带上我。

avalon到底是什么呢?它是和knockout,angular等都有点儿像又不太像的,同步视图的东西。当然这个概念并不准确,但便于理解。avalon在asp.net mvc中的应用,简单来讲,就是view视图中,实现dom元素与数据的绑定,把程序员的关注点放到“数据”上,而不是“dom”上。对数据的更改,可以立即反应到页面表现上。

【第一个例子】

司徒大牛自己写的第一个例子如下:

 

复制代码
 1 <!DOCTYPE html>
 2  <html>
 3      <head>
 4          <title></title>
 5          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 6          <script src="avalon.js"></script>
 7      </head>
 8      <body>
 9          <div ms-controller="box">
10              <div style=" background: #a9ea00;" ms-css-width="w" ms-css-height="h"  ms-click="click"></div>
11              <p>{{ w }} x {{ h }}</p>
12              <p>W: <input type="text" ms-duplex="w" data-duplex-event="change"/></p>
13              <p>H: <input type="text" ms-duplex="h" /></p>
14          </div>
15          <script>
16              avalon.define("box", function(vm) {
17                  vm.w = 100;
18                  vm.h = 100;
19                  vm.click = function() {
20                      vm.w = parseFloat(vm.w) + 10;
21                      vm.h = parseFloat(vm.h) + 10;
22                  }
23              })
24          </script>
25      </body>
26  </html>
复制代码

 

我来解释一下:使用avalon的三板斧:

  1. 在view页面中引用avalon.js文件(asp.net mvc4也可以写到BundleConfig里)。
  2. 在<script>里定义视图模型vm(关于这个vm,可是大有学问,话说我理解它足足用了特么两个星期,说明什么?我笨?你出去。后面我会专门开辟一节讲这个vm,这是个重点),即 avalon.define("box",function(vm){}),这个“box”是准备用来控制影响范围的标识,名字随便起个有意义的容易记的就好。
  3. define的回调函数里,对vm的各个属性赋值。最后不要忘了加一个扫描avalon.scan(); 但司徒老大的这个例程里怎么没这句?奇怪。

以上是js部分,在html里还要在dom元素上添加一些特有属性,实现绑定。

 

首先介绍一下{{}},这两个大括号括起来是插值运算符,是一种单向绑定,也就是说,可以把vm中的定义的数据,刷新到视图中。比如vm.w=100;在html中写{{w}},那么框架会把{{w}}替换为vm.w的值100。如果想在视图界面中更改这个w值,并回传给vm数据怎么办?好了,我们在交互方面非常重要的ms-duplex出马啦。ms-duplex是双向绑定函数,常用于input标签中,对数据的绑定,在input中对它的修改会立即反应到vm中去。

 

说到这里,估计你就明白了。其实IT界所有的技术进步,几乎无一不是为了让一切变得更简单(当然,前提是要功能满足需求),MVVM实现了view和vm的绑定和代码分离,耦合减少,实为前端coder不可多得的致命法宝。

 

不过,你用我上面写的几行东西,还是跑不起来,有个ms-controller你别忘了,它也要加到html中,你认为vm要在这个范围内起作用的dom元素中去。上面例程中的名字是"box"。另外,关于ms-controller还有一些知识,比如它可以嵌套,还会自动向上寻找等等,如果你们是多人开发,而且还有猪一样的队友,介绍你认识ms-important绝不会错。猛戳这里:http://rubylouvre.github.io/mvvm/avalon.important.html

 

下一节,我会写一个asp.net mvc4下的第一个例程,来告诉你如何从后台拿数据到前台来绑定,顺便介绍一些avalon的常用api。敬请期待……

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: .NET 6 是微软最新的开发平台版本,它带来了许多新的功能和改进,为开发者提供了更好的工具和建议。其中,MVVM 是一种流行的设计模式,即 Model-View-ViewModel,它在.NET 6中也有良好的支持和框架MVVM 框架旨在提供一种用于构建现代应用程序的模式,它将 UI 层与业务逻辑分离,UI 变得更加可测试和可维护。在.NET 6中,开发人员可以使用 Microsoft.Toolkit.Mvvm 包来使用 MVVM 体系结构。该包提供了一些开发人员通常需要的常见功能,例如委托和命令模式,以及ViewModel 应该实现的一些接口。此外,开发人员还可以使用 Prism 和 MVVMLight 等流行的第三方框架来实现 MVVM。 使用 MVVM 框架可以通过分离界面和业务逻辑来简化应用程序的开发。ViewModel 作为 Model 和 View 之间的中间人,接收来自 View 的用户输入并将其转化为 Model 所需的数据格式。在 ViewModel 中,开发人员可以封装业务逻辑和状态,并使用 Commands 调用各种操作,而这些 Commands 也由 ViewModel 声明。View 绑定到 ViewModel 的相应属性和有关 Commands 的属性,以控制在界面上显示的内容。 总之,MVVM 是.NET 6中一种流行的设计模式和框架,它可以帮助开发人员更容易地构建现代应用程序。使用 MVVM 可以使开发人员更好地控制界面和业务逻辑之间的交互,使应用程序更加清晰,易于维护。 ### 回答2: .NET 6是微软最新的.NET平台版本,它提供了许多新的功能和API,使得开发更加简单和高效。MVVM框架是一种模式,它将应用程序的UI和逻辑分开,使得代码更加结构化和易于维护。 在.NET 6中,MVVM框架的实现有多种选择。其中最流行的框架包括Prism、ReactiveUI和MvvmCross。这些框架都提供了在.NET平台上使用MVVM框架所需的功能,比如数据绑定、命令绑定、依赖注入和事件处理等。它们还提供了许多开发人员需要的功能,比如导航、消息通信和状态管理等。 Prism是一个基于WPF和Xamarin.Forms的MVVM框架,它提供了多个MVVM模式的实现,并且支持事件聚合和命令处理。ReactiveUI是一个用于WPF、Windows Forms和Xamarin的响应式MVVM框架,它采用了Rx.NET库来实现响应式编程。MvvmCross是一个跨平台的MVVM框架,它支持WPF、Silverlight、Windows Phone、iOS和Android等多个平台。 总的来说,.NET 6为MVVM框架提供了很好的支持,开发人员可以根据项目需要选择最适合自己的框架来实现MVVM模式,从而提高开发效率和程序稳定性。 ### 回答3: .NET 6 是 Microsoft 推出的一款全新版本的开发平台,它集成了新的技术和框架,提供了更加优化的性能和更加灵活的编程体验。在.NET 6 中,MVVM 模式被广泛应用于桌面应用程序、Web 应用程序以及移动应用程序的开发中,并且.NET 6 也提供了一些主流的 MVVM 框架供开发者选择使用,以便更加容易地实现应用程序的开发。 MVVM 是一种用于子UI开发的模式,它将应用程序分成三个部分:View、ViewModel 和 Model。View 负责显示和用户交互,Model 负责数据处理和业务逻辑处理,ViewModel 则是负责连接 View 和 Model,将数据从 Model 中取出并传递给 View,同时也将用户交互的反馈传递给 Model。 在.NET 6 中,MVVM 框架提供了许多便利的特性,例如可观察的数据绑定、命令绑定、事件绑定等,这些特性使得开发过程更加简化,同时也提高了开发效率和应用程序的可维护性。常用的 MVVM 框架有 Prism、MVVMLight 等,它们都具有良好的扩展性和高性能的特点,能够满足不同类型的应用程序开发需求。 总的来说,.NET 6 MVVM 框架应用程序开发中具有重要意义,采用 MVVM 模式能够使开发更加高效和便捷,同时也可以提高应用程序的可维护性和灵活性。开发者可以通过选择合适的 MVVM 框架来实现自己的开发需求,从而更好地应对不断变化的市场需求和技术趋势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值