问:我们在使用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. 测H5

    如果原文本自带样式,需要测在h5里能否正常展示

  2. javascript Hoisting变量提升

    1. 看人家举的两个例子,我认为这里的判断是否定义: !var 其实就是 指是否在函数function里面定义了.只有在funciton里面定义了了,js才hoist到最上面去找这个变量的值,否则就按 ...

  3. 装了SVN软件,但是文件夹没有绿色和红色的图标显示

    第一步: win+R,输入regedit,打开注册表.查找ShellIconOverlayIdentifiers,可以找到Tortoise相关的标签,这个时候会发现,这些标签都排在后面.需要在这些标签 ...

  4. 选择文件,显示其路径在ListBox控件里

    private void btnSelect_Click(object sender, EventArgs e)        {            lbxFiles.Items.Clear(); ...

  5. C++如何获取当前路径下所有文件的文件名

    今天我遇到了这样一个任务:要求编写一个程序,统计和这个程序在同一目录下(及其子目录)所有文件的单词数.统计单词数十分倒不是太难,倒是找出同一目录下的所有文件,是我从来没有接触过的.仔细分析,这个问题其 ...

  6. PHP配置文件详解php.ini

    [PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;; ...

  7. 常用API2 正则表达式

    正则表达式 正则表达式的概念 正则表达式(Regular Expression ,在代码中常简写为regex) 正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规 ...

  8. Js高级程序设计~读书笔记

    1.函数-函数声明和函数表达式 解析器在向执行环境加载数据时,函数声明和函数表达式的对待不同. 解析器会率先执行函数声明,将会在任何使用到它的地方前加载, 而对于函数表达式,只会在执行到的时候去加载: ...

  9. -1.记libgdx初次接触

    学习一门技术最难的是开发环境变量配置和工具配置,以下为我初次接触libgdx时遇到的问题 几个难点记录下 gradle 直接用下到本地,然后放到d盘,链接到就行(gradle-wrapper.prop ...

  10. xml文档格式学习笔记

    xml入门经典 (pdf书籍) https://www.cnblogs.com/zhaopengcheng/p/6848802.html