网上的mvvm框架好多,整理一下网上的评论,仁者见仁,智者见智吧 ,比如
vuejs angular knockoutjs avalonjs emberjs WinJS(前三个学习过,后边都没看过)
兼容性:angularJS(IE9), EmberJS(IE8), KnockoutJS(IE6), WinJS(IE9),avalonjs(IE10)
我们的玉溪大神开发的
优点:
- 简单:官方文档很清晰,比 Angular 简单易学。
- 快速:异步批处理方式更新 DOM。
- 组合:用解耦的、可复用的组件组合你的应用程序。
- 紧凑:~18kb min+gzip,且无依赖。
- 强大:表达式 & 无需声明依赖的可推导属性 (computed properties)。
- 对模块友好:可以通过 NPM、Bower 或 Duo 安装,不强迫你所有的代码都遵循 Angular 的各种规定,使用场景更加灵活。
缺点:
1.个人项目。
2.更新太快。
优点:
把后端逻辑放到前端处理,前端把view与viewmodel之间绑定,并且对viewmodel的数据进行逻辑处理。而后端则是通过ajax把viewModel和model进行数据交换。(meteor则是进一步,直接在前端操作MongoDB(子数据库),然后子数据库和主数据库会自动进行数据同步)
angular的数据绑定是使用脏检查事件。
knockoutJS可以选择为one way ,one time,two way绑定
ko.observalbe:对数据的get和set ko.computed:实时计算数据 applyBindings:对viewmodel进行应用。
data-binding对函数和数据绑定:click\event\value\text等值的绑定
Simple List:ko.observableArray
其实后台并没有太大改变,逻辑依然,只是把页面的处理逻辑交给了前端。让前端更加像一个APP。
SPA:Single Page Application。使用ajax和服务器及数据库交换数据:服务器传输时只需要传输json,不传页面。使界面更加友好。个人感觉KnockoutJS适合开发SPA的原因就是MVVM的模型,多个Page共享同一个ViewModel,使信息传递更加简单。而angular则再进一步,使用Service、directive、controller给一个应用划分好层次,使结构清晰。ps:个人比较喜欢不同的page使用不同的控制器。
KnockoutJS把逻辑移到前端后,但个人感觉只是提供一个雏形,而没有像angular一样进一步的给逻辑分层,让逻辑更加清晰,使代码维护更加简单。KnockoutJS仅提供了数据绑定功能实现了ViewModel。而angular则给人感觉实现了前端的MVC分层。
但是无可否认的是,knockoutJS使用的开发思路和jQuery一致,都是先渲染DOM,再操作DOM。因此不需要太大的改变开发思路,导致学习成本没angular那么高。如果作为一个学习理解SPA和MVVM概念的框架,是比较好的。
原文:http://www.cnblogs.com/coding4/p/6380826.html