Vue (读音 /vjuː/,相似于 view) 是一套用于构建用户界面的渐进式框架,发布于 2014 年 2 月。与其它大型框架不一样的是,Vue 被设计为能够自底向上逐层应用。Vue 的核心库只关注视图层,不只易于上手,还便于与第三方库(如:vue-router(页面跳转)
,,vue-resource
vuex(状态管理框架)
)或既有项目整合。javascript
Axios
:前端通讯框架;由于 Vue
的边界很明确,就是为了处理 DOM,因此并不具有通讯能力,此时就须要额外使用一个通讯框架与服务器交互;固然也能够直接选择使用 jQuery 提供的 AJAX 通讯功能;在我看来,渐进式表明的含义是:主张最少。
每一个框架都不可避免会有本身的一些特色,从而会对使用者有必定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。
好比说,Angular,它两个版本都是强主张的,若是你用它,必须接受如下东西:
- 必须使用它的模块机制- 必须使用它的依赖注入- 必须使用它的特殊形式定义组件(这一点每一个视图框架都有,难以免)html
因此Angular是带有比较强的排它性的,若是你的应用不是从头开始,而是要不断考虑是否跟其余东西集成,这些主张会带来一些困扰。前端
好比React,它也有必定程度的主张,它的主张主要是函数式编程的理念,好比说,你须要知道什么是反作用,什么是纯函数,如何隔离反作用。它的侵入性看似没有Angular那么强,主要由于它是软性侵入。vue
Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你能够在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也能够整个用它全家桶开发,当Angular用;还能够用它的视图,搭配你本身设计的整个下层用。你能够在底层数据逻辑的地方用OO和设计模式的那套理念,也能够函数式,均可以,它只是个轻量视图而已,只作了本身该作的事,没有作不应作的事,仅此而已。
渐进式的含义,个人理解是:没有多作职责以外的事。java
渐进式框架:Progressive,说明vue.js的轻量,是指一个前端项目可使用vue.js一两个特性也能够整个项目都用yue.js。
自底向上逐层应用:做为渐进式框架要实现的目标就是方便项目增星开发。react
对于传统的js,咱们只有MV,js操做dom(view)直接赋值模型属性(model),咱们使用的ajax能够经过后台获取数据,而后就须要操做dom,进行数据的赋值,此时model和view就出现了耦合webpack
而vue,添加了一个vm,将view和model进行隔离,vue.js充当了这个vm,vue.js使用本身的语法将model渲染到视图中;ios
在 MVVM 架构中,是不容许 数据 和 视图 直接通讯的,只能经过 ViewModel
来通讯,而 ViewModel 就是定义了一个 Observer
观察者web
至此,咱们就明白了,Vue.js 就是一个 MVVM 的实现者,他的核心就是实现了 DOM 监听
与 数据绑定
ajax
当你把一个普通的 JavaScript 对象传给 Vue 实例的 data
选项,Vue 将遍历此对象全部的属性,并使用 Object.defineProperty
把这些属性所有转为 getter/setter
。Object.defineProperty 是 ES5 中一个没法 shim 的特性,这也就是为何 Vue 不支持 IE8 以及更低版本浏览器。
这些 getter/setter 对用户来讲是不可见的,可是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。这里须要注意的问题是浏览器控制台在打印数据对象时 getter/setter 的格式化并不一样,因此你可能须要安装 vue-devtools
来获取更加友好的检查接口。
每一个组件实例都有相应的 watcher 实例对象,它会在组件渲染的过程当中把属性记录为依赖,以后当依赖项的 setter
被调用时,会通知 watcher
从新计算,从而导致它关联的组件得以更新。
结合了react 的优势,虚拟 DOM, 用于减小真实 DOM 操做,在内存中模拟 DOM 操做,有效的提高了前端渲染效率。
结合了Angular优势。模块化开发。