Vue.js+Node.js全栈开发实战
上QQ阅读APP看书,第一时间看更新

2.1 Vue.js基础

本节介绍Vue.js的基础知识、发展历史、组织架构,以及具体应用等方面的内容。

2.1.1 Vue.js简介

Vue.js是一个用于构建用户界面的渐进式JavaScript框架,采用了“自底向上、增量开发”的设计方式。Vue.js的核心是只关注视图层,便于与第三方库或既有项目进行整合。细心的读者会发现,这几句话里面提到了几个关键词汇(如:“渐进式”“自底向上、增量开发”“视图层”),下面就这些方面的内容展开讲解一下。

首先,这个“渐进式”的概念就比较新颖,那么具体是什么含义呢?所谓“渐进式”就是一开始不需要设计人员完全掌握其框架的全部功能特性,可以放到后续步骤中以逐步的增加方式来完成,这样在每一步都可以更专注于当前的任务。从本质上讲,这就是设计模式上的优化与进步。而与Vue.js框架相对应的Angular框架和React框架均不是严格意义上的渐进式框架,均具有一定程度上的个性化及排他性。

其次,关于“自底向上、增量开发”这个概念主要描述的是设计方式。这种设计方式的思路就是,先设计好基础骨架,然后再逐步向上扩充,完善功能和效果。采用“自底向上、增量开发”的设计方式,可以有效地提高开发效率,避免不必要的重复工作。

最后,这个“视图层”的概念指的就是著名的MVVM架构模型中的View层。Vue.js是一个基于MVVM架构模型实现了“双向数据绑定”功能的前端JavaScript库,其关注的核心点就是View层。另外,这里提到的关于MVVM架构模型和“双向数据绑定”的内容,会在下文中详细介绍。

2.1.2 Vue.js发展历史

Vue.js最早发布于2014年左右,开发者是曾在Google工作的中国籍开发人员——尤雨溪。根据作者本人的描述,Vue.js框架的定位就是为前端开发者提供一个低门槛、高效率,又同时能够伴随用户成长的前端框架。

Vue.js框架的发展历程主要如下:

(1)实验(experiment)阶段(2013年年中到2014年2月)。

(2)0.x版本阶段(2014年2月~2015年10月)。

(3)1.x版本阶段(2015年10月~2016年9月),发行版名称为“Evangelion”。

(4)2.x版本阶段(2016年9月~至今),发行版名称为“Ghost in the Shell”。

关于Vue.js框架以上几个版本更新发展的过程,大致介绍如下:

在早期0.x版本阶段,内容更新主要集中在Vue模板语法上。而在1.x版本阶段期间,模板语法就日趋稳定了。在2.x版本阶段,内容更新专注于内部的渲染机制功能,这期间引入了著名的Virtual DOM机制,从而实现了服务端渲染、原生渲染、手写渲染函数等强大的设计功能。目前,它的3.x版本正处于开发过程中,更新目标主要集中于利用ES6(ECMAScript 2015)版本的新特性、改进内部架构,以及性能优化等方面上。

2.1.3 Vue.js与MVVM架构模型

软件设计的架构模型往往决定着一个开发框架的特性与性能,就好比基因对于人类的决定性因素一样。架构模型从MVC经过MVP、再到MVVM,每一步都体现了开发人员对于设计模式的不断完善。

MVVM(Model-View-ViewModel)架构其实本质上就是对MVC架构的改进版。MVC架构可谓是大名鼎鼎,相信大多数读者在刚开始接触架构模型时学习的就是该架构。从MVVM架构模型的命名来看,Model-View-ViewModel中的Model(模型)和View(视图)沿用了下来,改变的就是Controller(控制器)被ViewModel替换了。那么,ViewModel代表什么概念?Vue.js借鉴了MVVM的什么设计理念呢?

ViewModel在MVVM中负责在Model(模型)和View(视图)中间的桥接工作,当Model(模型)改变时通过ViewModel通知View(视图),反之亦然。Vue.js框架专注于View(视图层),将视图的状态和行为抽象化,并于业务逻辑分开来设计。Vue.js虽然没有完全照搬MVVM模型,但对于ViewModel的设计有独到之处。当View(视图)改变时会触发事件,通过ViewModel负责监听事件并同步更新Model(模型)。

2.1.4 双向数据绑定

Vue.js框架实现的一项核心功能就是“双向数据绑定”,所谓双向数据绑定就是指View(视图)和Model(模型)的数据相互同步。

Vue.js框架是基于MVVM架构设计的。为了实现View(视图)和Model(模型)的数据相互同步,Vue.js会通过DOM Listeners来监听并改变Model(模型)中的数据,当Model(模型)中的数据发生改变时,会通过Data Bingings来监听并改变View(视图)中数据的展示。这一点也正是MVVM架构对于“双向数据绑定”的支持。

在Vue.js框架底层,是通过使用JavaScript Object对象的defineProperty()方法,重新定义了对象获取属性值和设置属性值的方法,来实现“双向数据绑定”操作的。因此,其原理仍旧是通过JavaScript方式实现的。

2.1.5 Vue.js特点

Vue.js是一款基于数据驱动思想开发的JavaScript框架,下面总结一下关于Vue.js框架的几个主要特点:

  • Vue.js是基于MVVM架构设计的、一套用于构建用户浏览器界面的、渐进式的前端Web框架。
  • Vue.js是基于数据驱动思想开发的JavaScript框架,实现了在尽可能的条件下减少繁杂的DOM操作。
  • Vue.js开发了一套自己的模板语言,采用虚拟DOM的方式渲染HTML页面,实现了将前后端进行分离的开发方式。
  • Vue.js的核心库只关注视图层,同时借助MVVM架构的特点实现了“双向数据绑定”的核心功能。
  • Vue.js只聚焦于视图层,具备能力实现单文件组件以及相对复杂的单页面应用。
  • Vue.js是一个轻巧的、高性能的、可组件化的JavaScript框架,设计了易于学习的API方法,能够非常方便地与其他前端库进行有效整合。