渐进式框架的大概意思就是你可以只用我的一部分,而不是用了我这一点就必须用我的所有部分。

勿喷! 快乐与知识并存! 嘻嘻!

初始化及挂载

在new  vue() 之后。 Vue 会调用 _init 函数进行初始化 也就是这里的init 过程,它会初始化生命周期,事件,props,methods,data,compited与watch等。其中最重要的是通过Object.defineProperty 设置setter 与getter 函数 ,用来实现[响应式]以及【依赖收集】

初始化之后 调用¥mount会挂载组件  如果运行时编译 即不存在render function 但是存在 template 的情况,需要进行【编译】步骤

编译

compile编译可以分成 parse ( 解析) optimize(优化) 与generate (生成) 三个阶段  最终到(渲染)render function。

parse

会用正则等方式解析 template 模板中的指令,class style 等数据  ,形成AST

拓展:

什么是AST在Vue的mount过程中,template会被编译成AST语法树,AST是指抽象语法树(abstract syntax tree或者缩写为AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式。Vue源码中虚拟DOM构建经历 template编译成AST语法树 -> 再转换为render函数 最终返回一个VNode(VNode就是Vue的虚拟DOM节点)

optimize

optimize的主要作用是标记static 的节点,在编译过程有某处的优化,而且在更新页面是会有path的过程

有diff的算法  减少比较  优化patch的性能

generate是最终将抽象语法树(abstract syntax tree或者缩写为AST)转化为render function 的过程

当我们有了这个虚拟的树之后,再交给一个patch函数,负责把这些虚拟DOM真正施加到真实的DOM上 。在这个过程中,Vue有自身的响应式系统来侦测在渲染过程中所依赖到的数据来源。在渲染过程中,侦测到的数据来源之后,之后就可以精确感知数据源的变动。到时候就可以根据需要重新进行渲染。当重新进行渲染之后,会生成一个新的树,将新树与旧树进行对比,就可以最终得出应施加到真实DOM上的改动。最后再通过patch函数施加改动。

vue的依赖追踪通过ES5的 Object.defineProperty 方法实现。比如,我们给它一个原生对象,Vue会遍历这个数据对象的属性,然后进行属性转换。每一个属性会被转换为一个 getter 和一个 setter。同时每个组件会有一个对应的 watcher 对象,这个对象的职责就是在当前组件被渲染的时候,记录数据上面的哪些属性被用到了。

经历:

当某个数据属性被用到时,触发 getter,这个属性就会被作为依赖被 watcher 记录下来。

整个函数被渲染完的时候,每一个被用到的数据属性都会被记录。

相应的数据变动时,例如给它一个新的值,就会触发 setter,通知数据对象对应数据有变化。

此时会通知对应的组件,其数据依赖有所改动,需要重新渲染。

对应的组件再次调动渲染函数,生成 Virtual DOM,实现 DOM 更新

作者:peng凯
链接:https://www.jianshu.com/p/86cc7d100f31
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

前端框架 渐进式框架相关推荐

  1. Vue.js构建用户界面的渐进式框架(前端学习笔记1.0)

    文章目录 前言 一.Vue是什么? 二.前端核心分析 1.1.概述 1.2.前端三要素 1.3.结构层(HTML) 1.4.表现层(CSS) 1.5.行为层(JavaScript) 二.前端发展史 2 ...

  2. 好程序员web前端分享MVVM框架Vue实现原理

    好程序员web前端分享MVVM框架Vue实现原理,Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js和react.js更加简洁 ...

  3. vue的渐进式框架的理解

    打开vue的官网介绍,第一句就是"vue是一套用于构建用户界面的渐进式框架"."渐进式"这几个字在刚接触vue时并没有很注意到, 使用至今,再次打开官网,这几个 ...

  4. 对vue的理解 什么是渐进式框架

    Vue 是一套用于构建用户界面的渐进式框架. 渐进式框架意思使vue不强求我们一次性接受并使用它的全部功能特性. (大概意思就是你可以只用我的一部分,而不是所有部分) 场景1:刚开始一个项目,开发者对 ...

  5. 前端Vue.js框架是什么?有哪些特点?

    前端Vue.js框架是什么?有哪些特点?Vue.js是一个前端框架,用于构建用户界面的渐进式框架.在Vue中一个核心的概念是让用户不再操作DOM元素解放了用户的双手,让程序员可以更多的时间去关注业务逻 ...

  6. 为什么说Vue是渐进式框架?

    渐进式 Vue是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合. -- Vu ...

  7. 前端资源(框架,库,网站)

    前端有很多优美的框架和库,以及一些资源很多的网站和博客,今天我准备和大家分享分享 框架 库 插件 工具 网站 (由于Vue和React的UI库比较多,我将在下一篇文章中展示) 框架      Vue: ...

  8. 渐进式框架 Vue.js

    渐进式框架 Vue.js 1. Vue.js 概述 2 快速创建.部署.运行和打包一个 Vue.js 项目 2.1. 创建项目 2.2. 安装依赖 2.3. 项目部署和访问 2.4. 打包 Vue 项 ...

  9. Web前端响应式框架

    响应式网页的设计与实现 最近学前端接触到了框架,介绍并记录自己的学习收获. 前言 各种移动智能设备的广泛应用,带动了互联网应用向移动平台方向发展,并呈现多元化的趋势.但智能手机.平板电脑.智能手表等多 ...

最新文章

  1. 研究人员开发出全3D打印离子动力纳米卫星推进器
  2. Java-Runoob:Java Stream、File、IO
  3. 学习笔记94—所有用过SCI-hub的科研工作者都应该知道的事
  4. 图解MapReduceMapReduce整体流程图
  5. 小程序获取头像试试水 02《 程序员变现指南之 微信QQ 小程序 真的零基础开发宝典》
  6. 很全的路由器默认初始密码集合.txt_UpSet——集合关系可视化神器
  7. java collectiongroup 类_Java中的collection集合类型总结
  8. 阿里云存储负责人吴结生:安全可靠是云存储立身之本, 智能技术将激活存储技术新变革...
  9. (4)建立一个标准尺寸的平面,并对其进行着色贴图、拉伸一定的厚度
  10. 计算机管理格式化没有顺利完成,内存卡无法格式化
  11. ArcPad 10 使用与同步 ArcGIS Server 的数据全攻略(二)
  12. H264视频编码原理基础分析
  13. android fragment 设置透明,DialogFragment背景透明设置
  14. IDEA 插件开发,显示气泡
  15. Scade Suite开发 ARINC 661 (2)Scade Suite基本操作
  16. 国际体验服服务器维护中怎么办,体验服维护中什么意思 | 手游网游页游攻略大全...
  17. double和float区别
  18. Java加密技术(四)——非对称加密算法RSA
  19. 企业邮箱使用安全注意事项
  20. 30行代码实现微信朋友圈自动点赞

热门文章

  1. 深入理解gradle中的task
  2. 万字长文深入理解java中的集合-附PDF下载
  3. Hive体系结构(四)注意事项与扩展特性
  4. each 数据获取attr_我背着CSDN偷偷记录了大半年我博客数据
  5. tf调不到keras怎么 回事_拼多多刷单关键词搜不到是怎么回事?如何解决?
  6. SpringBoot切换Tomcat容器,SpringBoot使用Jetty容器
  7. mysql max_allowed_packet查询和修改
  8. 【终极办法】Client does not support authentication protocol requested by server; consider upgrading mysql
  9. 关于DNS服务中查询域名的命令
  10. java用循环给map里面存值_Java中如何遍历Map对象的4种方法