BDW*_*BDW 8 .net silverlight mvvm jsrender
我一直在阅读MVVM,到目前为止发现它非常有趣.但是,我发现的大多数示例都适用于Windows应用程序,而不是Web应用程序.我也看到很多提到与Silverlight一起使用的MVVM,我知道Silverlight可以用于Web或Windows应用程序.
所以我的问题是 - MVVM是基于Web的应用程序的有效模式吗?如果是,UI必须是Silverlight吗?我正在决定将哪些技术用于我们需要设计的新中型网站,而Silverlight可能是对权力的强烈推销 - 尽管我们在幕后使用的技术并不重要非常.
任何人都可以在网络环境中使用MVVM提供的任何信息都将受到赞赏.示例代码也很棒.
Tom*_*ceg 12
DotVVM是一个基于ASP.NET的开源MVVM框架,基于Knockout JS.它使用简单,您不必编写大量的Javascript代码.对于大多数情况,您只需要C#和HTML与CSS.
视图看起来像这样 - 它是一个扩展了HTML的服务器控件和数据绑定:
<div class="form-control">
<dot:TextBox Text="{value: Name}" />
</div>
<div class="form-control">
<dot:TextBox Text="{value: Email}" />
</div>
<div class="button-bar">
<dot:Button Text="Submit" Click="{command: Submit()}" />
</div>
Run Code Online (Sandbox Code Playgroud)
viewmodel是一个C#类,如下所示:
public class ContactFormViewModel
{
public string Name { get; set; }
public string Email { get; set; }
public void Submit()
{
ContactService.Submit(Name, Email);
}
}
Run Code Online (Sandbox Code Playgroud)
还有Visual Studio Extension,它添加了IntelliSense和项目模板.
该框架处理验证,本地化,SPA和其他常用功能.它支持.NET Framework和.NET Core.
当然MVVM是有效的"web"模式,但目前它的用途非常有限.
MVC和MVVM之间的主要区别在于更新应用程序数据.对于当前的Web应用程序,MVC是首选,因为Web主要是单向通信,所有用户输入都是用表单封装的.
在创建具有丰富UI的真正交互式应用程序时,MVVM变得有用.
所以要简单.如果您使用ASP.NET(或任何其他面向服务器端的tehnique)构建Web解决方案,则使用MVC.如果你正在使用丰富的UI应用程序使用MVVM,如果你不喜欢Silverlight,请尝试使用KnockoutJS进行Javascript解决方案.
MVVM可以在Web和基于XAML的技术中很好地工作.XAML技术在其出色的绑定功能方面具有优势.但是使用了诸如Knockout(非常好)和JsViews/JsRender之类的JavaScript库(一旦JsViews进入测试版,你应该看看它).
具体回答:是的,您可以使用Web应用程序执行MVVM.好吗?是的,如果你使用像Knockout这样的库(http://knockoutjs.com).MVVM的关键在于它是一个简单的分离模式:
MVVM规定的技术无处可去.视图是你的html,你的结构.该模型是您的数据(可能是JSON).viewmodel是您的javascript对象,用于分隔特定视图的逻辑.
Knockout通过一个名为observables的概念提供了日数据绑定的方法.基本上,想想这就像INotifyPropertyChanged接口,但对于JavaScript.Knockout还支持observableArray(类似于XAML中的ObservableCollection).Knockout还有许多其他功能,允许您订阅数据更改事件,创建行为,自定义绑定等等.无论如何......在淘汰赛中你会得到很多.
如果你选择在没有像Knockout这样的库的情况下进行MVVM,你仍然可以这样做,但是你会失去数据绑定功能,并且可能想要自己编写一些东西.但我强烈建议您坚持使用能够为您完成此任务的库.
答案很长......但我想给你开始探索.
对于 web web(html) 它并不是真正有用,因为 mvvm 的目的是让界面立即反映视图模型中的更改。(通过数据绑定/事件)。
对于 Web,视图模型的更改通常是屏幕的后期+完全重建。
那么为什么还要麻烦呢……
但是,如果您有一个 AJAX 网站,其中有一个固定的 HTML 页面,并且内容会使用 javascript 不断更新。然后它就变得有趣了。
MVVM 对于 Web 开发来说是完全可以接受的。事实上,推荐用于Silverlight开发。我们公司在许多项目中使用 MVVM + Silverlight 并取得了巨大成功。最初的学习曲线可能很艰难,但一旦成功,它就会带来很多好处。
在我看来,要使 MVVM 真正发挥作用,您需要一个具有正确绑定支持的框架。否则,您将不得不编写大量“粘合”代码来连接视图和视图模型。Silverlight 具有出色的绑定支持,如果操作正确,您可以消除视图中的大部分代码隐藏,以便所有业务逻辑都保留在 ViewModel 中。
Tim Heuer 有一些关于 MVVM 和 Silverlight 的优秀教程和视频。我强烈建议您浏览一下他的东西。 http://timheuer.com/blog/articles/getting-started-with-silverlight-development.aspx