问:我们在使用Vue时,实际上干了什么?
 
答:实际上只干了一件事——new了一个Vue对象。后面的事,都交由这个对象自动去做。就好像按了下开关,机器跑起来了,剩下的事就不用我们再操心了。
 
各位看官先别不服,FEer在基于Vue开发项目时,确实写了很多代码,但本质上,这些代码都是在往这台机器的固定工作程序上添加自定义的行为。譬如说,一个组件被初始化时,其created生命周期钩子一定会被执行,我们可以做的只是填写具体的执行内容,至于这些内容何时被真正执行,是完全由Vue对象控制的,开发者无从插手。
 
为什么这样设计呢?根本原因是前端项目越来越复杂,传统的开发方式显得力不从心。举个例子,用jQuery时,我们自己操作DOM;用Vue时,我们不再亲自操作DOM,而是让Vue去做。我们之所以愿意把DOM管理权让渡给Vue,因为这本就是个脏活累活,随着前端项目规模迅速增长,手动管理DOM的难度、出错率和对性能的影响都在急剧升高,以至于手动管理显得不现实,必须应用一套自动化的管理方式。
 
什么叫自动化的管理方式?
 
DOM本质上是数据的呈现,或者说是数据映射成的视图。当然,严格地说,DOM本身也只是一种描述用户界面的模型,最终的呈现是由浏览器在解析DOM后完成的,但在前端语境下,可以把DOM与视图等同。
 
所以前端程序的核心任务是:达成数据与视图之间的映射
 
用jQuery时,映射是我们亲自做的,比如说有一个name需要展示出来,我们就创造一个div,把name放在div里,然后把div挂载到DOM树上;但用Vue时,情况不一样了,我们告诉Vue有一个name变量需要被映射,并且(以字符串的形式)告诉Vue映射的模板是个div,但真正创造div结点并将其挂载到DOM树上这一步,是由Vue完成的。
 
看出区别了吗?用上Vue后,我们不再关心DOM结点增/删/改的具体实现,而是专注于创造数据与视图的映射规则(业务逻辑),Vue自会根据这些规则,以最优的策略完成DOM操作,这就是自动化的管理方式。
 
从前文描述可以看出,Vue值得我们了解的重点包括:
1. 如何监听数据变化?因为只有实现了监听数据变化,才能把变化同步到视图上。尤雨溪说基本原理是用Object.defineProperty方法劫持data对象各个属性的getter和setter。
2. DOM更新策略。React和Vue都采用了Virtual DOM技术,以尽量减少DOM操作数量和范围。
 
另外一个值得关注的点是组件的实现,因为现代前端项目体积庞大,必须依赖组件化功能将项目拆分为相对独立的模块,方能有效地组织和复用代码。
 
Vue生态还拥有许多其他工具,它们都是基于Vue所要完成的任务,在某个具体的方面提供支持,如vuex是为了实现跨组件通信、数据共享和状态集中管理,vue-router是为了管理组件和路径的映射关系等。
 
以上提到的三点在Vue.js中的具体实现,且待下回分解。

前端框架本质之探究——以Vue.js为例的更多相关文章

  1. 4.VUE前端框架学习记录四:Vue组件化编码2

    VUE前端框架学习记录四:Vue组件化编码2文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...

  2. 3.VUE前端框架学习记录三:Vue组件化编码1

    VUE前端框架学习记录三:Vue组件化编码1文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...

  3. 前端框架之争丨除了Vue、Angular和React还有谁与之争锋

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/most-popular-frontend-f ...

  4. 前端框架Angular、react、vue在github上的数据统计-2018-05

    2018年5月31日09:15:45 突然想看看几个前端框架的数量,然后就截图了如下数据: 分析: react关注.收藏.Fork都高vue一些, 但相差不大 angular比较奇葩,收藏只有二者一半 ...

  5. Vue.js-----轻量高效的MVVM框架(一、初识Vue.js)

    1.什么是Vue.js? 众所周知,最近几年前端发展非常的迅猛,除各种框架如:backbone.angular.reactjs外,还有模块化开发思想的实现库:sea.js .require.js .w ...

  6. 前端框架:Angular React 和 Vue的比较

    前端这几年的技术发展很快,细分下来,主要可以分成四个方面: 1.开发语言技术,主要是ES6&7,coffeescript,typescript等: 2.开发框架,如Angular,React, ...

  7. 常用的前端框架Angular、React、Vue

    VUE 一.vue导读 1.1 vue的优点:结合其他框架点,轻量级,中文API,数据驱动,双向绑定,MVVM设计模式,组件化开发,单页面应用 1.2 vue环境的导入: 本地导入 <!--方法 ...

  8. 前端架构之路:使用Vue.js开始第一个项目

    Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式.本文通过一个简单的实例开始上手Vue.js开发.   一.技术准备 笔者建议在开始项目前,对以下两个技术点进行了解. ...

  9. spring cloud 框架源码 activiti工作流 vue.js html 跨域 前后分离 springboot

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

随机推荐

  1. vue-computed计算属性用法

    siytem函数可以当做变量在html中展现,列:{{siytem}}  v-for(item in siytem)遍历也可以. 这个函数是从获取到的数据中,得到值后再次提取里面的数据,通过下标 me ...

  2. Java往指定地址接口发送内容方法

    package com.upload.tool; import java.io.BufferedReader;import java.io.InputStreamReader;import java. ...

  3. MYSQL后更改ROOT的密码后无法启动服务报错1067

    安装MYSQL后更改了ROOT的密码后用 net start mysql 启动时报错1067.使用以下命令:1.进入mysql安装目录的bin目录下:cd C:\Program Files\MySQL ...

  4. 7C - 折线分割平面

    我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示.  Input ...

  5. angular使用sass的scss语法

    一.现象 为了简写样式 二.解决 1.安装sass ,利用npm 安装(npm工具如果没有,请先自行安装好) (1).npm install node-sass --save-dev (2).npm ...

  6. es5的语法学习

    1. strict模式 严格模式,限制一些用法,'use strict'; 2. Array增加方法 增加了every.some .forEach.filter .indexOf.lastIndexO ...

  7. python 模块——os 模块

    os 模块--操作系统的各种接口 常用函数: os.path os.path.join(path,*paths) (常用,设置文件路径)将一个或者多个路径连接起来. PATH_TO_TEST_IMAG ...

  8. nodejs之使用express框架连接mongodb数据库

    var express = require('express');var router = express.Router();var app = express();var MongoClient = ...

  9. python实现简单动画——生命游戏

    生命游戏 生命游戏的宇宙是一个无限的,其中细胞的二维正交网格,每个细胞处于两种可能的状态之一,即*活着*或*死亡*(分别是*人口稠密*和*无人居住*).每个细胞与它的八个邻居相互作用,这八个邻居是水平 ...

  10. Java平台

    Java的平台无关性 不同的网络环境,操作系统 支持嵌入式设备 减少开发部署时间 Java自身的平台和语言 编译成class文件 可在Java虚拟机中运行,与外部环境无关(对虚拟机的依赖) 通过外部A ...