事情的原由是這樣的。以前12月參加了一場面試。面試官問我,當一個由數組的渲染的列表,當數組的首尾顛倒,DOM是如何變化的?git
我當時回答的不是特別好,因此後來專門上網研究了一下。github
網上有許多介紹diff算法的文章,可是一大坨文字配上大量源碼,讓人實在沒有看下去的慾望。因而乎,我作了這個小工具,但願你們能夠輕鬆瞭解Diff更新的過程。面試
舊的dom算法
新的dom數組
這個工具會逐步將Diff更新的過程,可視化的展示出來瀏覽器
實現的原理很簡單,我本身動手實現了一個基於純js對象的diff算法(不須要映射到瀏覽器的dom),diff算法會將更新中的每個步驟的結果,保存到一個快照數組中,最後遍歷這個快照數組便可。dom