Vue.js是一个 基于MVVM构建用户界面的渐进式框架,Vue 采用自底向上增量开发的设计。 Vue.js 支持所有兼容 ECMAScript 5 的浏览器。
笔者刚刚如Vue一周吧
对于MVVM的解释:Model View ViewModel
Model:数据模型,含有大量信息但不具备任何逻辑行为,数据的改变并不影响展示。
View:在MVC中View是被动由Controller控制的,而在MVVM中View是主动的,包括数据绑定,事件,行为。不但负责展示,而且负责将自身变化同步到ViewModel中。
ViewModel:负责数据转换具有一定的逻辑,负责将Model的改变反应到View上,同时View改变时同步更改Model。
优点:
UI与逻辑分离【其实MV*应该都具备的优点】
数据绑定对于前端人员使用更少的代码将数据展现到界面上
测试方便,只需测试ViewModel(由于没有做过测试此点笔者还未证实)
缺点:
在View中添加了大量的数据绑定,导致View的复用性降低
数据绑定使一些Bug很难调试,定位困难
当大型项目时ViewModel也会随之越来越复杂(笔者参与Vue的项目在每个模版中ViewModel的复杂度还未表现出缺点,个人认为只要将整体组件化,每个组件针对不同的ViewModel,其实不会太复杂)
渐进式:https://www.zhihu.com/question/51907207?rf=55052497
综合知乎上大师的讲解,笔者在此概述一下:所谓渐进式,其实是让新上手的用户(譬如笔者)可以快速进入写代码的行列,当然这只是一个初步,在写代码的过程中逐渐的增加对vue的理解和其api的了解和使用。笔者了解过AngularJS,但并没有真正入过项目,所以没有办法去证实所谓的强主张,当然排他性我是有所体验的。Vue就相当于一个拎包入住的房间,当你后来需要完善时在自行添加就好,不像是一个毛坯房需要一开始先完善很多东西才能满足基础需要。