1、Vue概述
1.1、什么是MVVM
、
MVVM
(
Model-View-ViewModel
)是一种软件设计模式,由微软
WPF
(用于替代
WinForm
,以前就是 用这个技术开发桌面应用程序的)和Silverlight
(类似于
Java Applet
,简单点说就是在浏览器上运行 WPF)的架构师
Ken Cooper
和
Ted Peters
开发,是一种简化用户界面的事件驱动编程方式。
MVVM
源自于经典的
MVC
(
Model-View-Controller
)模式。
MVVM
的核心是
ViewModel
层,负责转换Model中的数据对象来让数据变得更容易管理和使用。其作用如下:
该层向上与视图层进行双向数据绑定
向下与
Model
层通过接口请求进行数据交互

1.2、 为什么要使用MVVM
MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处
低耦合
:视图(
View
)可以独立于
Model
变化和修改,一个
ViewModel
可以绑定到不同的
View
上,当View变化的时候
Model
可以不变,当
Model
变化的时候
View
也可以不变。
可复用
:可以把一些视图逻辑放在一个
ViewModel
里面,让很多
View
重用这段视图逻辑。
独立开发:前后端分离,开发人员可以专注于业务逻辑和数据的开发(
ViewMode
),设计人员可以专注于页面设计。
可测试
:界面素来是比较难以测试的,而现在测试可以针对
ViewModel
来写。

1
、
View
View
是视图层, 也就是用户界面。前端主要由
HTH L
和
css
来构建, 为了更方便地展现数据, 已经产生 了各种各样的前后端模板语言, 比如FreeMarker
,
Thyme leaf
等等, 各大
MVVM
框架如
Vue.js
、 Angular JS,等用来构建用户界面的内置模板语言。
2
、
Model
Model
是指数据模型, 泛指后端进行的各种业务逻辑处理和数据操控, 主要围绕数据库系统展开。这里的难点主要在于需要和前端约定统一的接口规则
3
、
ViewModel
ViewModel
是由前端开发人员组织生成和维护的视图数据层。在这一层, 前端开发者对从后端获取的Model数据进行转换处理, 做二次封装, 以生成符合
View
层使用预期的视图数据模型。
需要注意的是
View Model
所封装出来的数据模型包括视图的状态和行为两部分, 而
Model
层的数据模型是只包含状态的比如页面的这一块展示什么,那一块展示什么这些都属于视图状态(
展示
)
页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图行为
(
交互
) 视图状态和行为都封装在了View Model
里。这样的封装使得
View Model
可以完整地去描述
View
层。由 于实现了双向绑定, View Model
的内容会实时展现在
View
层, 这是激动人心的, 因为前端开发者再也不必低效又麻烦地通过操纵DOM
去更新视图。
1.3、 Vue
Vue(
读音
/vju/
, 类似于
view)
是一套用于构建用户界面的渐进式框架, 发布于
2014
年
2
月。与其它大型框架不同的是, Vue
被设计为可以自底向上逐层应用。
Vue
的核心库只关注视图层, 不仅易于上手, 还便于与第三方库(
如:
vue-router
,
vue-resource
,
vue x)
或既有项目整合
1
、
MVVM
模式的实现者
Model
:模型层, 在这里表示
JavaScript
对象
View
:视图层, 在这里表示
DOM(HTML
操作的元素
)
ViewModel
:连接视图和数据的中间件,
Vue.js
就是
MVVM
中的
View Model
层的实现者
在
MVVM
架构中, 是不允许数据和视图直接通信的, 只能通过
ViewModel
来通信, 而
View Model
就是定义了一个Observer
观察者
ViewModel
能够观察到数据的变化, 并对视图对应的内容进行更新
ViewModel
能够监听到视图的变化, 并能够通知数据发生改变
1.3.1为什么使用Vue.js
轻量级
, 体积小是一个重要指标。
Vue.js
压缩后有只有
20
多
kb(Angular
压缩后
56kb+
,
React
压缩后44kb+)
移动优先。更适合
移动端
, 比如移动端的
Touch
事件
易上手,学习曲线平稳,文档齐全
吸取了
Angular(
模块化
)
和
React(
虚拟
DO
M
)
的长处, 并拥有自己独特的功能,如:计算属性
开源,社区活跃度高
1.4 、第一个Vue程序
v2.cn.vuejs.org
:vue2
的官网
2、Vue基础语法
2.1、 v-bind
2.2 、v-if、v-else
1.
在浏览器上运行,打开控制台
2.
在控制台输入
vm.type=false
然后回车,你会发现浏览器中显示的内容会直接变成
false
2.3 、v-for
打开控制台,在控制台输入
vm.items.push({message
:
'vue hello'})
,尝试追加一条数据,会发现
页面也添加了数据