从Knockout到Angular的架构演变

2008年第一次在WPF中使用MVVM模式以后。就一直热衷于耦合隔离、模块化与重构、UI和逻辑分离、单元測试以及后面的领域模型。谈及MVVM模式,本身也开发过一套框架,但没有长期更新和维护,因此索性就一直使用Prism和MVVM Light。到2012年的时候,看到HTML5的大行其道和Silverlight的衰落,果断把主要精力投入到ASP.NET MVC和Knockout的开发和研究其中,虽然Knockout比較easy上手且方便使用,但总认为没有在WPF和Silverlight中使用MVVM那么酣畅淋漓。跨域

 

WPF/Silverlight 浏览器

Web架构

MVVM框架app

· Prism框架

· MVVMLightide

· Caliburn(Caliburn.Micro)模块化

· MVVM Helpers工具

· Cinchpost

· MVVMFoundation性能

· AngularJS

· Knockout (or use Durandal)

· Backbone.js

· Ember.js

· Epitome

· Agility.js

虽而后面尝试过其它框架。比方经过Durandal 实现SPA让我以前对Knockout的种种不便有所改观。但始终仍是有所缺憾,直至现在使用Angular,尤为是Angular + TypeScript才发现一切问题都不复存在了。

(以前使用WPF/Silverlight的最大问题事实上是很是难招到合适的人员作美工和设计。因为很是少人会专门投入到Blend和XAML的研究其中,但现在使用Web就会发现资源是那么的丰富,不管是人力资源仍是开源社区)

功能

WPF/Silverlight

AngularJS

UI

XAML

HTML+CSS

设计工具 Design/Blend and Visual Studio All professional design tools

控件模板和本身定义控件

Control Templates or Custom Control

Custom Directives (Element)

动画

System.Windows.Media.Animation

CSS3 Animations and/or JavaScript via ngAnimate

样式和模板

XAML/Resources

CSS3 and LESS

样式继承和关联

Implicit Styles and/or BasedOn

LESS Mixins

转换和过滤

IValueConverter

Filters

绑定Model到UI

ViewModel and DataContext

Controller and Scope

服务重用

Prism Service Locator

Custom Services/Service Factory

事件

Routed Events

$emit and $broadcast

模块化

MEF and/or Prism Module Catalog

Angular Modules

Services

WCF or WCF RIA Services

RESTful services (accessed via the Angular $http/$resource Services)

导航与路由

UriMapper

Routing

内部组件通讯

Prism Event Aggregator  or Messager

Shared Services

视频

MediaElement

HTML5 Video Element

脱离浏览器执行

Yes

Yes, via Chrome Apps

封装UI逻辑

Behaviors

Custom Directives (Attribute)

UI与逻辑分离

Control or Data Templates

CSS/LESS

跨域请求

Access-Policy

CORS

单向数据绑定

BindingMode.One

Ng-Bind

双向数据绑定

BindingMode.TwoWay

Ng-Model

单向数据源绑定

BindingMode.OneTime

Ng-Model

开源模板

Modern UI or MahApps

Bootstrap or Foundation

浏览器支持

Need silverlight plugin or XBAP

All supported

因此现在将架构由Knockout到Angular的调整并使用到新项目的开发,详细例如如下:

https://images0.cnblogs.com/blog/47784/201408/312227322046408.png

 

image

 

image

到眼下为止,尚未发现Angular有什么大的技术难题或者性能问题。假设有Angular项目经验的朋友,最好仍是留言讨论。学习共勉!

另外。很是多人发邮件问WPF是否会像Silverlight同样消亡。事实上这个问题很是难回答,尤为在眼下这个不光是微软主导的开发环境下(HTML5流行度远甚于XAML。IOS和Android的大行其道与Windows Phone的不温不火,Windows的命运尚不知晓)。可能连微软本身也不能很是好地解答这个问题,因此一切仅仅能由市场和时间来慢慢决定。

相关文章
相关标签/搜索