在HTML5中使用MVVM编码模式的合理方法是什么?

时间:2011-10-19 16:14:56

标签: silverlight html5 mvvm cross-browser

我有一个用Silverlight编写的很好的应用程序。为了提供更好的跨浏览器支持,我们正在考虑使用HTML5前端进行重写。

使用XAML和带有MVVM编码模式的C#从Silverlight迁移到HTML5前端的合理方法是什么。

另一方面,如果这不是一个好主意并且应该放弃MVVM模式,请解释原因。

5 个答案:

答案 0 :(得分:6)

Knockout是一个很棒的javascript库,可以帮助你编写MVVM客户端。您可以在javascript中创建视图模型,并使用html模板绑定它们(在jquery模板的帮助下)。您的视图模型可以使用ajax来检索数据。

它与Silverlight开发基本相同 - 您使用HTML而不是XAML和javascript而不是C#/ VB.Net。您甚至可以使用相同的Web服务...如果您计划稍后提供接口或转换,这可能会有所帮助。

修改
我认为我不应该放弃恕我直言MVVM,因为它真的很好地分离了关注点(我想正确实施时),但是一个大赢家肯定是它让开发人员思考或者在心态或分离责任在一个应用程序中我已经将Knockout.js用于Web项目,将Caliburn.Micro用于Silverlight,并且非常喜欢这种开发风格。

答案 1 :(得分:1)

Knockout是用HTML / Javascript实现的MVVM模式,带有数据绑定和所有。 http://knockoutjs.com/

如果您想要的只是通过DOM操作实现,并且您已经习惯并喜欢MVVM模式,那么Knockout应该是一个不错的选择。

答案 2 :(得分:1)

是的,HTML 5的MVVM模式称为MVC。最容易用MVC3实现。提供与JavaScript代码相关的抽象层,支持ViewModels(又称视图)以及视图,数据访问和业务逻辑之间的关注点分离。

最重要的是,验证和UI事件处理以简单的方式为您连接,允许您从各种HTML控件的JavaScript事件处理程序的复杂性中抽象出来。

但是,如果您严格要坚持使用HTML& JavaScript,我建议滚动你自己的JavaScript类(是的JS是函数式语言,但你仍然可以创建它们)代表你的UI层并处理UI事件。然后创建自己的Ajax库,以便从UI类到服务器后端来回获取JSON序列化数据。最后创建自己的业务逻辑类(也在javascript中)来控制UI和DataAccess(ajax)类。简而言之......很多肮脏的工作。

答案 3 :(得分:1)

还有来自Google的实验性模型驱动视图(MDV)库。 不幸的是,它只是作为原型展示。从概念上讲,它真的很酷,但要准备好自己修复bug。

http://code.google.com/p/mdv/

答案 4 :(得分:0)

还有JSViews。这个并不像Knockout那样光滑,但更新DOM的速度更快。该项目与jquery松散相关,因为它的作者背后是现在报废的查询模板。