第1章 遇见Vue.js

MVC最早出现在Java领域,后来又出现了MVP,最后是现在最成熟的MVVM。

MVC是应用最广泛的应用架构之一,Model(模型)、Controller(控制器)、View(视图),视图和模型的联系靠控制器,基本联系都是单向的,这主要是基于分层的目的,让彼此职责分开。

MVP是从MVC模式演变而来的,基本思想相同,Presenter/Controller负责逻辑的处理。MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。Presenter与具体的View是没有直接关联的,而是通过定义好的借口进行交互,从而使得在变更View的时候可以保持Presenter不变。(MVP架构设计思路:面向接口编程,调用层使用接口对象,去调用接口方法,实现层去实现接口方法,并在调用层实例化)

MVVM代表框架有:知名度偏低的Knockout、早期的Ember.js、谷歌的AngularsJS和Vue.js。

相对于前两种,MVVM只是把Controller(控制器)和Presenter(展示器)改成了ViewModel(视图模型)。View和ViewModel二者的变化会自动同步更新到对方。这种自动更新,是因为ViewModel中的属性实现了Observer(观察者),当属性变更时都能触发到相应的操作。( M <-> VM <-> V )

Vue.js聚焦视图层,是一个构建数据驱动的Web界面的库。通过简单的API提供高效的数据绑定和灵活的组件系统。

Vue.js的特性:
①足够轻量(体积小且不依赖其他基础库)
②数据绑定(对于富交互、状态机类似的前端界面,数据绑定快捷方便)
③指令(类似于AngularJS,可以用一些v-*的简单内置指令,也可以自定义,通过对应表达式值的变化就可以修改对应的DOM)
④插件化(Vue.js的核心库不包含Router、AJAX、表单验证等功能,但是可以很便捷的加载对应的插件)

Vue.js与AngularJS的区别?
相同点
①都支持指令(内置指令和自定义指令)
②都支持过滤器(内置指令和自定义指令)
③都支持双向绑定
④都不支持低端浏览器(IE6/7/8)
不同点
①AngularJS学习成本比较高,比如增加了Dependency Injection(依赖注入)特性,而Vue.js本身提供的API相对简单、直观。
②性能上,AngularJS依赖对数据做脏检查,所以Watcher越多越慢。Vue.js使用基于依赖追踪的观察并且使用异步队列更新,所有数据都是独立触发。对于庞大的应用来说,这个优化差异还是比较明显的。

Vue.js与React的区别?(React来自Facebook)
相同点
①React采用特殊的JSX语法,Vue.js在组件开发中也推崇编写.vue特殊文件格式,对文件内容都有一些约定,两者都需要编译后使用。(JSX是一种JavaScript的语法扩展,运用于React架构中,其格式比较像是模版语言,但事实上完全是在JavaScript内部实现的。元素是构成React应用的最小单位,JSX就是用来声明React当中的元素,React使用JSX来描述用户界面。)
②中心思想相同(一切都是组件,组件实例之间可以嵌套)
③都提供合理的钩子函数(开发者可以定制化的处理需求)
④都不内置AJAX、Router等功能到核心包,而是以其他形式(插件)加载
⑤在组件开发中都支持mixins(混入)的特性
不同点
①React依赖Virtual DOM,而Vue.js使用的是DOM模板,React采用的virtual-dom会对渲染出来的结果做脏检查。(virtual-dom是一种利用JavaScript构建dom的技术,主要解决了复杂应用程序的维护程度。浏览器在处理dom时,总会附加很多很多属性,这会使得每一次数据更新,渲染都会很慢。Virtual-dom利用JavaScript做了中间层,JS记录状态,将每一次状态中的变化同步到视图中。脏检查:在angular中,他没有办法判断你的数据是否做了更改,所以它设置了一些条件,当你触发了这些条件之后,它就执行一个检测来遍历所有的数据,对比你更改了地方,然后执行变化。这个检查很不科学。而且效率不高,有很多多余的地方,所以官方称为脏检查。)
②Vue.js在模板提供了指令、过滤器等,可以方便、快捷的操作DOM。
③Vue.js也提到支持virtual-dom,但是两者还是有差异的。

Vue.js与Knockout的区别?
Knockout是一款很优秀的JavaScript库,它可以帮助你仅使用一个清晰整洁的底层数据模型(data model)即可创建一个富文本且具有良好的显示和编辑功能的用户界面。

Vue.js与Ractive.js的区别?
Ractive.js是一款入门容易却功能强大的JS库,它的主旨是模板+数据=UI,数据的双向绑定,DOM节点的实时更新,事件处理等多个有用的功能。它吸取了AngularJS中的一些灵感,因此两者在有些地方是有相似之处的。对于一些中小型项目,完全可以用这个框架作为前端框架进行开发,可以快速建立起项目的前端模型。
RactiveJS 内置了基本的选择器模块,Template引擎,封装的Event,Node等对象。所以如果没有特别的需求,几乎可以替代jQuery。

Vue.js与Polymer的区别?
Polymer基于ShadowDOM、CustomElements、MDV等最新浏览器特性,代表了下一代Web框架的方向:一切皆组件、尽量减少代码量、尽量减少框架限制。由加盟Google的原PalmwebOS开发团队打造。Google的Web UI库。

Vue.js与Backbone.js的区别?
backbone.js提供了一套web开发的框架,通过Models进行key-value绑定及custom事件处理,通过Collections提供一套丰富的API用于枚举功能,通过Views来进行事件处理及与现有的Application通过RESTful JSON接口进行交互.它是基于jquery和underscore的一个js框架。

Vue.js与Riot的区别?
Riot.js是一款MVP(模型-视图-呈现)开源客户端框架,其最大的特点就是体积非常小,不足10KB,虽然体积小,但它可以帮助用户构建大规模的Web应用程序。Riot.js包含的组件有:一件模板引擎、路由、事件库和一个严格的MVP模型,可以把所有的组件组织在一起。和其他框架相比,它速度更快、体积更小、功能更加强大。

Vue.js的使用:
安装:
(1)script 直接src链接vue地址文件
(2)npm 执行命令 $ npm i vue --save-dev
(3)bower 执行命令 $ bower i vue --save-dev

Vue.js正式发布于2014年2月

posted @ 2020-03-09 20:52  AZUKI七  阅读(117)  评论(0编辑  收藏  举报