betty985 / learn-how-vue-works Goto Github PK
View Code? Open in Web Editor NEW深入浅出vue.js读书笔记
深入浅出vue.js读书笔记
虚拟dom是随着时代发展而诞生的产物。
命令式操作dom:
vue在一定程度上知道具体哪个状态发生了变化和哪些节点使用了这个状态,这样就可以通过更细粒度的绑定来更新视图。代价是粒度太细会有很多watcher同时观察某些状态,会有一些内存开销以及一些依赖追踪的开销。vue2.0采取了一个中等粒度的解决方案,状态侦测只细化到某个组件,组件内部通过虚拟DOM渲染视图,这可以大大缩减依赖数量和watcher数量。
vue通过模板描述状态和视图之间的映射关系,它会先将模板编译成渲染函数,然后执行渲染函数生成虚拟节点,使用虚拟节点更新视图。
虚拟DOM在vue中的作用:
提供虚拟节点和对比新旧vnode,并根据对比结果进行DOM操作来更新视图。
VNode类可以实例化不同类型的vnode实例,而不同类型的vnode实例各自表示不同类型的DOM元素。vnode可以理解为节点描述对象,描述了应该怎么创建真实DOM。
可以将vnode渲染成真实的DOM,实际作用是计算出真正需要更新的节点,在现有DOM上进行修改来实现更新视图的目的,最大限度减少DOM操作,显著提升性能。本质是用js的运算成本替换DOM操作的执行成本,js的运算速度比DOM快得多,所以很划算。
就是以新的vnode为准增删改节点。
增删节点的共同点是两个虚拟节点完全不同。新旧节点是同一个文本节点,需要进行更细致的比对。
静态节点:一旦渲染到页面上就不会变化。
如果新旧两个虚拟节点时静态节点就直接跳过更新节点。
新虚拟节点有文本属性而且和旧节点文本属性不一样,就直接调用setTextContent方法(在浏览器环境下是node.textContent方法)来将视图中DOM节点的内容改为虚拟节点的text属性所保存的文本。
没有text也没有children,说明是空节点。把旧虚拟节点删成空标签。
双端对比。
只需要尝试使用相同位置的两个节点来比对是否是同一个节点:如果恰巧是同一个节点,直接就可以进入更新节点的操作;如果尝试失败了,再用循环的方式来查找节点。这样做可以很大程度地避免循环oldChildren来查找节点,从而使执行速度得到很大的提升。
《深入浅出Vue.js》刘博文
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.