假如你的项目使用了React,你知道怎么作性能优化吗?
你知道为何React让你写shouldComponentUpdate或者React.PureComponent吗?
你知道为何React让你写Immutable Data Structures吗?
你知道为何React让你在渲染列表时,必定要给每一个子项加一个key吗?
你知道为何React让你在条件渲染时,不写if而写&&操做符或三元操做符吗?html
一切的答案都在Virtual DOM上!
只要你跟着我完成了这个手写Virtual DOM的系列,上面的全部问题你都将获得解答,今后进入react高手的阵营!前端
如今当咱们谈virtual DOM (VDOM)的时候,一般会将React捆绑在一块儿谈。可实际上VDOM并非React创造的,React将这个概念拿过来之后融会贯通慢慢地成为目前前端最煊赫一时的框架之一。react
首先咱们都知道什么是DOM(Document Object Model),简单说就是将一个HTML文档抽象表达为树结构。VDOM则是将DOM再抽象一层生成的简化版js对象,这个对象也拥有DOM上的一些属性,好比id, class等,但它是彻底脱离于浏览器而存在的。算法
随着前端技术的发展,如今的网页应用变得愈来愈庞大,DOM树也随之变得复杂。当咱们要修改DOM的某个元素时,咱们须要先遍历找个这个元素,而后才修改能修改。并且若是咱们大量地去修改DOM,每次DOM修改浏览器就得重绘(repaint)页面,有的时候甚至还得重排(reflow)页面,浏览器的重排重绘是很损耗性能的。json
React是怎么用VDOM解决这个问题的呢?segmentfault
原理其实仍是很直观的,但React究竟是怎么用代码实现的呢?其中最关键的一步是React是怎么diff的?若是搞清楚了内部的实现原理,对于咱们使用React来写出性能更高的代码相当重要。因此今天我要手把手教你们怎么从零开始实现VDOM。浏览器
咱们将采用跟React相似的方式性能优化
下面咱们开始正式进入写代码环节,建议你们打开编辑器跟着我一步一步的敲代码。这样手把手教你敲代码的的博主你去哪里找?还不抓住这个百年不遇的机会????babel
你们能够新建一个目录,而后新建1-4这四个文件框架