1,先了解什么是MVX框架模式?
mvx 框架模式:MVC+MVP+MVVM **
1,MVC: Model模型+View视图+Controller控制器
* 1 目的是分层,让彼此的职责分开
* 2 View通过Controller来和Model联系,Controller是view和Model的协调者,View和Model不直接联系,基本联系都是单向的。
* 3 用户通过Controller来操作Model**,从而改变View
2,MVP: 是从MVC演变而来
* 1都是通过Controller/Presenter负责逻辑的处理+Model提供数据+View负责显示。
* 2 在MVP中,Presenter和view是没有直接关联的,通过接口进行交互,
* 3 MVP模式的框架:Riot.js
3,MVVM: Model+View+ViewModel
*1,Model:代表数据模型,用于处理数据以及业务逻辑
*2,View:代表UI视图,负责将数据模型转为UI视图
*3,ViewModel:Model和View无直接连接,是通过ViewModel进行数据的交互,它是一个同步View和Model的对象,开发者只需要专注于逻辑处理,不需要手动操作DOM,
* 4,View的变化会自动更新到ViewModel,ViewModel的变化也会自动同步到View上显示。
* 5,MVVM模式的框架有:Angular.js + Vue.js和Konckout+Ember.js后两种知名度较低以及是早起的框架模式。
2,Vue的概念
- 1,vue是一套构建用户界面的渐进式框架(MVVM框架)。
- 2,采用自底向上增量开发的设计
- 3,目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件
3,vue的特性
- 1,轻量级的框架
- 2,双向数据绑定
- 3,指令
- 4,插件
vue优点 - 1简单:官方文档清晰
- 2快速:异步批处理更新DOM
- 3组合:用解耦的,可复用的组件组合你的 应用程序
- 4紧凑:压缩较小,无依赖
- 5强大:表达式不需要声明依赖的可推倒属性 (properties)
- 6对模块友好:可通过npm,bower和duo安装
vue缺点
4,Vue与其他框架的区别
1.与Angular.js的区别
相同点:
* a:都支持指令,内部指令和自定义指令
* b:都支持过滤器:内置过滤器和自定义过滤器
* c:都支持双向绑定
* d:都不支持低端浏览器
不同点:
* a:Angular学习成本高,比如增加了Dependency Injection特性,增加了依赖注入,Vue本身提供的API比较简单,直观。
* b:在性能上,Angular依赖对数据做脏检查,所以watcher越多越慢。Vue使用基于依赖追踪的观察并且使用异步队列更新,所有数据都是独立触发的。
1.与React.js的区别
相同点:
* a:React采用了JSX语法,Vue也可使用特殊文件格式
* b:中心思想相同:一切都是组件,组件可以嵌套组件
* c:都提供合理的钩子函数,可以让开发者定制
* d:都不内置Ajax,Router等功能的核心包,而是以插件的形式加载
* e:在组件开发中都支持mixins的特性。
不同点:
* a:React依赖Virtual DOM,而Vue使用DOM模板,React使用的Virtual DOM会对渲染出来的结果做脏检查
* b:vue在模板中提供了指令,过滤器等,可以非常方便的操作DOM
5,Vue的生命周期
1.什么是vue生命周期?
Vue实例从创建到销毁的过程。
2.vue生命周期的作用是什么?
Vue生命过程有许多事件钩子,让我们更容易形成好的逻辑
3.vue生命周期总共有几个阶段?
可分为8个:创建前/后,载入前/后,更新前/后,销毁前/后
4.第一次页面加载会触发哪几个钩子?
beforeCreate,created,beforeMount,mounted
### 6, Vue的生命周期
beforeCreate()在数据观测和初始化事件还未开始
created () 完成数据观测,属性和方法的运算,初始化事件
beforeMount()在挂载之前被调用,相关的render函数首次被调用
mounted()在el被创新的vm.$el替换,
beforeUpdate()
update()
beforeDestroy()
destroy()
7,vue实现双向数据绑定的原理:object.defineProperty()
实现双向数据绑定主要是:采用数据劫持结合发布者-订阅者模式
属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。当把一个普通js对象传给vue实例来作为它的data选项时,Vue将遍历它的属性,用Object.defineProperty()将它们转为getter/setter。用户看不到getter/setter,但是在内部它们让Vue追踪依赖,在属性被访问和修改时通知变化。
vue的数据双向绑定将MVVM作为数据绑定的入口,整合Observer,Compile和Watcher三者,通过Observer来监听model的数据变化,通过Compile来解析编译