[分享]Web前端开发:为何选择MVVM而非MVC_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1780 | 回复: 0   主题: [分享]Web前端开发:为何选择MVVM而非MVC        下一篇 
    本主题由 koei123 于 2015-7-26 22:50:12 移动
xpisme
注册用户
等级:少校
经验:1117
发帖:65
精华:0
注册:2015-6-29
状态:离线
发送短消息息给xpisme 加好友    发送短消息息给xpisme 发消息
发表于: IP:您无权察看 2015-7-13 11:01:12 | [全部帖] [楼主帖] 楼主

对框架的挑选 Ember.js、Backbone.js、Knockout.js、Spine.js、Batman.js , Angular.js



1. 轻量级的应用选择哪一个会比较好?
2. 那一个比较简单,容易上手
3. 哪一个开发周期最短?

对比:

  1. angular是找大而面的道路,因此体积非常庞大,1.6-1.7万行;
  2. avalon旨在提供一种远离DOM操作的前端开发体验,0.6.3只有2420行,min只有29kb。
  3. avalon从angular抄来了不少好东西,如{{}}插值表达式,ms-model(通过事件实现双向同步),ms-controller(为了VierModel指定作用域范围),但都做了增强,{{aaa|html}添加html过滤器就能输出innerHTML,ms-model可以通过data-observe来开关双向同步,ms-controller拥有孪生兄弟ms-important。
  4. avalon的$watch与ms-bind方法提供比angular强大得多回调功能。
  5. avalon拥有像knockout, emberjs那样的计算属性, angular没有。
  6. avalon与angular都拥有监控数组,但avalon的监控数组像knockout那样拥有大量好用的方法,能自动同步页面,angular的则相当弱。
  7. avalon与angular都拥有定义UI的功能(将一个元素变成一个UI组件),angular是使用自定义标签,avalon是使用ms-ui属性,但自定义标签在旧式IE并不好使,并且可能随着浏览器的升级,浏览器会添加一个与你一模一样的新标签。avalon则安全多了,并且拥有12UI组件可做参考,实现起来非常简单。
  8. avalon是采取边扫描边转换绑定的策略,用户打开页面后立即能看到效果,angular是要全部扫描后才转换绑定,因此用户可能看到一些奇异的模板。
  9. avalon是通过define方法来定义ViewModel,并有scan方法指定作用的元素与ViewModel。angular要求用户将xxxxCtrl函数暴露到全局作用域下,框架自己去取去组装。
  10. avalon在ViewModel有个$json,就是ViewModel对应的纯数据的Model(ViewModel每次被操作,都会自动同步View与Model的),我们可以直接将它放到AJAX中使用。angular没有独立的Model,需要自己转换。
  11. avalon是使用Object.defineProperty与VBS实现ViewModel,angular则是将整个xxxxCtrl函数进行编译,转换一大堆getter, setter从而实现双向绑定,因此angular的体积是相当庞大的。
  12. avalon的绑定值可是ViewModel的属性或数组或表达式, angular则允许用户在视图定义新变量,新对象,这是个不好的特征,会让页面非常难维护。
  13. avalon的绑定已经强大到让用户完全脱离DOM写业务,顶多是取一下表单元素的checked, disabled等状态值,angular还是传统的思路,只是在1.0后添加数据绑定机制。
  14. 总结

    如果你在考虑究竟那个是最适合你的项目,我觉得应该考虑两个方面:

    • 应用范围: 你希望一个框架或者类库能够帮助你做多少东西?你是希望有一个可以让你从0开始全程都为你提供架构帮助的全能框架,还是希望自己定制模式和类库?不管选择那种,对不同的项目和团队都是有价值的。

    • 设计美学:你是否看过这些框架并且想自己构建一个小型的类库?你喜欢这样做吗?不要根据局限与描述或者功能列表去选择。忽略你自己的编码习惯就像仅仅根据小说的目录去买书或者是根据个人简历和履历来选择配偶。

    除了不同的地方,我可以肯定上述这些技术都遵循的一个功能:模型和视图分离。这是一种在20年钱就已经存在的经典设计模式。即使你在构建最简单的web应用界面你也能从这种模式中受益。

该贴由koei123转至本版2015-7-26 22:50:12




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论