前端框架 渐进式框架
渐进式框架的大概意思就是你可以只用我的一部分,而不是用了我这一点就必须用我的所有部分。
勿喷! 快乐与知识并存! 嘻嘻!
初始化及挂载
在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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
- Vue-数据驱动的渐进式前端框架
- Vue-数据驱动的渐进式前端框架
- 本文中,我们为大家收集了有关前端设计的9个非常有用的响应式框架。在过去的几年中响应式框架已经出现,如今它已经变得越来越普遍。因此,我们收集这些响应式框架来为您服务,希望当您在设计前端时这些框架能帮助到
- 前端生成与读取Excel的两种框架使用方法
- 前端框架用哪个好
- 【web++_第三阶段_前端框架选择】
- webpack4+vue2手动搭建前端开发框架
- 从此不求人:自主研发一套PHP前端开发框架 (1)
- 一个非常优秀的前端框架--BootStrap
- 国产前端框架,不轻不重适合快速开发
- 你需要了解的前端框架有哪些
- 使用前端框架Foundation 4来帮助简化响应式设计开发
- 如何选择前端框架:ANGULAR VS EMBER VS REACT
- 从此不求人:自主研发一套PHP前端开发框架(6)
- 从此不求人:自主研发一套PHP前端开发框架(10)
- 关于流行的VUE.js前端框架学习
- Web前端框架学习—Bootstrap
- 前端开发框架推荐
- 几个响应式前端开发框架
- 前端框架 zTree 从数据库中动态加载树形菜单