zoukankan      html  css  js  c++  java
  • mvvm框架

    网上的mvvm框架好多,整理一下网上的评论,仁者见仁,智者见智吧 ,比如

    vuejs angular knockoutjs avalonjs emberjs WinJS(前三个学习过,后边都没看过)

    兼容性:angularJS(IE9), EmberJS(IE8), KnockoutJS(IE6), WinJS(IE9),avalonjs(IE10)

    Vue.js 

    我们的玉溪大神开发的

    优点:

    1. 简单:官方文档很清晰,比 Angular 简单易学。
    2. 快速:异步批处理方式更新 DOM。
    3. 组合:用解耦的、可复用的组件组合你的应用程序。
    4. 紧凑:~18kb min+gzip,且无依赖。
    5. 强大:表达式 & 无需声明依赖的可推导属性 (computed properties)。
    6. 对模块友好:可以通过 NPM、Bower 或 Duo 安装,不强迫你所有的代码都遵循 Angular 的各种规定,使用场景更加灵活。

    缺点:

        1.个人项目。

        2.更新太快。

    AngularJS

    优点:

      1. 动态视图:以前从来没有想过js可以如此扩展HTML的属性,但是AngularJs做到了,它替我们静态的HTML加了很多扩展性功能,有一种让HTML由死变活的感觉。
      2. 完善:是一个比较完善的前端MVW框架,包含模板,数据双向绑定,路由,模块化,服务,依赖注入等所有功能,模板功能强大丰富,并且是声明式的,自带了丰富的 
        Angular 指令。
      3. Google维护:AngularJS有Google来维护,无疑有了一个强大的后台,对于推广和维护明显比Vue.js和avalon有优势,社区也非常活泼,能够很好促进它的发展。
      4. AngularJS & Ionic:Ionic: Advanced HTML5 Hybrid Mobile App 
        Framework,这俩就是一个好基友,Ionic通过用AngularJS为了创建一个框架,最适合开发的丰富和强大的应用程序。上次于知乎答了一个相关问题: 
        做webapp开发,性能和效率最好的框架和打包app平台分别是哪个? 
        • 汤威的回答,详细可以见这里。

    缺点:

      1. 大而全:学习起来有难度,对于我来讲学习曲线很曲折,比较难理解一些。
      2. 推翻重写:前段时候逛社区发现AngularJS2.0会把之前的推翻重写,两个框架的改变很大,基本是两个框架了,等于是说等到2.0出来后又需要从头开始,不过又说回来,@徐飞老师的[翻译]有关Angular 
        2.0的一切 · Issue #8 · xufei/blog · GitHub这篇文章很好说明了AngularJS2.0的变化。
      3. 不支持IE8以下,貌似2.0变得只支持移动端了,等到出来后再看吧。

    knockoutJS

    1、MVVC架构了解—viewmodel

    把后端逻辑放到前端处理,前端把view与viewmodel之间绑定,并且对viewmodel的数据进行逻辑处理。而后端则是通过ajax把viewModel和model进行数据交换。(meteor则是进一步,直接在前端操作MongoDB(子数据库),然后子数据库和主数据库会自动进行数据同步)

    2、数据绑定

    angular的数据绑定是使用脏检查事件。 
    knockoutJS可以选择为one way ,one time,two way绑定

    ko.observalbe:对数据的get和set ko.computed:实时计算数据 applyBindings:对viewmodel进行应用。 
    data-binding对函数和数据绑定:clickeventvalue ext等值的绑定 
    Simple List:ko.observableArray

    3、SPA

    其实后台并没有太大改变,逻辑依然,只是把页面的处理逻辑交给了前端。让前端更加像一个APP。 
    SPA:Single Page Application。使用ajax和服务器及数据库交换数据:服务器传输时只需要传输json,不传页面。使界面更加友好。个人感觉KnockoutJS适合开发SPA的原因就是MVVM的模型,多个Page共享同一个ViewModel,使信息传递更加简单。而angular则再进一步,使用Service、directive、controller给一个应用划分好层次,使结构清晰。ps:个人比较喜欢不同的page使用不同的控制器。

    4、总结

    KnockoutJS把逻辑移到前端后,但个人感觉只是提供一个雏形,而没有像angular一样进一步的给逻辑分层,让逻辑更加清晰,使代码维护更加简单。KnockoutJS仅提供了数据绑定功能实现了ViewModel。而angular则给人感觉实现了前端的MVC分层。 
    但是无可否认的是,knockoutJS使用的开发思路和jQuery一致,都是先渲染DOM,再操作DOM。因此不需要太大的改变开发思路,导致学习成本没angular那么高。如果作为一个学习理解SPA和MVVM概念的框架,是比较好的。

  • 相关阅读:
    .Net Mvc 基于Filter实现对权限的扩展定制
    VS 2015 远程调试
    SVN 创建版本库
    .NET 调用支付宝沙箱接口
    selenium常用总结
    Python常用小技巧
    Centos7 安装Mysql 5.7
    Sqlserver 递归查询
    Sqlserver 中case when 的详细用法总结
    Asp.NetCoreWebApi入门
  • 原文地址:https://www.cnblogs.com/coding4/p/6380826.html
Copyright © 2011-2022 走看看