爲何react這麼快呢 ?react
由於react用了虛擬DOM;算法
可是每次虛擬DOM轉真實DOM不也是很浪費性能嗎 ?性能優化
nice,因此關鍵點在Diff算法這裏,去對比新舊DOM樹,然後經過補丁去更新到真實DOM上;性能
這個比對不是也很浪費時間嗎 ?優化
正常狀況下,比較兩個樹形結構差別的算法的時間複雜度是O(N^3),這個效率顯然是沒法接受的。spa
react經過總結DOM的實際使用場景提出了兩個在絕大多數實踐場景下都成立的假設,基於這兩個假設,React實現了在O(N)時間複雜度內完成兩棵虛擬DOM樹的比較。效率
兩個假設是:渲染
(1)若是兩個元素的類型不一樣,那麼它們將生成兩棵不一樣的樹;im
(2)爲列表中的元素設置key屬性,用key標識對應的元素在屢次;總結
面對性能優化咱們能作什麼呢 ?
一、使用生產環境版本的庫;
二、避免沒必要要的組件渲染;
三、使用key;