標籤:

為什麼瀏覽器不將類似react.js的虛擬DOM在其內部實現呢?

如果瀏覽器都在內部實現了虛擬DOM,那麼,大家就沒有必要使用react.js/canvas/native了吧?直接用瀏覽器的Webview,性能豈不是更好?react的虛擬DOM是用JS實現的,肯定沒有瀏覽器直接native實現的虛擬DOM快吧?


其實確實是有人在討論這事的:https://twitter.com/sebmarkbage/status/606129662759010306

按 vdom 那樣重新搞一套 API 沒有必要,更現實一點的可能是採用類似資料庫那樣的 transactional model,你把你想要做的操作 queue up,然後 flush 讓瀏覽器統一優化。

參與者有:Sebastian Markbage (React lead), Yehuda Katz (Ember lead), Ryosuke Niwa (Apple Webkit committer), Anne van Kesteren (Mozilla, WHATWG)


這跟多年前瀏覽器應不應該內置 jQuery 的討論一樣。如果 Virtual DOM API 不能成為標準,其升級速度一定超過瀏覽器的升級速度,開發者就要去兼容老版本瀏覽器上的老版本 API。


你把它作為標準的時候就會有越來越多人用,然後就會給他加上越來越多的功能,然後慢慢地就會和 DOM 差不多慢了。可能可以去掉些歷史包袱,但是有種重新搞一套 DOM 的感覺。


瀏覽器已經夠複雜了,你知道到嗎


  1. 如果 FB 在學術派里(W3C)里足夠有影響力,把 JSX 能納入標準,瀏覽器的廠商們自然會將它內置實現。
  2. FB 出一個瀏覽器。

  3. 給現在瀏覽器加 Plugin,或在自己可控的 runtime 里(象 FB App或用 FB SDK 的 App)可用 native 實現 Virtual DOM。


sorry,理解有誤,撤回回答。


這就是前端蛋疼的地方,也是前端的意義所在。

雖然前端貌似都是html,css還有JavaScript。不像後端,java,php,c#,python等等。。。但實際上,前端這種統一之下,是不自由,是分裂;後端那種分裂之下,是一種自由

前端無論怎麼搞,都是各種瀏覽器是實現環境。但是瀏覽器,是各個廠商的產品,必然參雜各個廠商的利益。然後就會有各種各樣的不同,雖然有標準,但是所謂「標準」,更像是一個指導性的,而不是規則。這樣下來,前端就是:一群各異的人,來做同一件事。

但是要聚集這些大家,所規定的,就要是一種比較基礎的、限制少的標準(其實根本很難限制少,畢竟直接卡死在瀏覽器環境中,而且瀏覽器還是別人開發的,這也是為什麼很多公司都開發自己的瀏覽器)。在這些基礎上,每個人根據各自需求,去構建自己需要的庫和框架。比如react里的虛擬DOM,比如jQuery(雖然不是一個東西,但是你看jQuery用的那麼廣了,不也沒有集成在瀏覽器里么)。這就是體現特異的地方。

其實這些東西,瀏覽器和開發者之間,也是不斷的相互促進發展的。比如早期瀏覽器,支持的都很簡單,html的標籤也是慢慢演化,css3的新特性,html5 新規定的功能函數。jQuery中,一些好的特性,也被吸收到了html5當中。


我覺得Virtual DOM的思路很好 將來也許被瀏覽器內部實現也不一定 只不過不一定是React.js


真navi你不知道瀏覽器確實有一套類似的,而且還很標準。

等有人想知道的時候,上來補


React的Virtual Dom實現的又不是最好的,Ember和Angular 2的都很棒。那大家都要去搞個標準不打架啊?


現在瀏覽器內核實現不就是類似虛擬DOM么。。還實現個毛。


貌似介於canvas和dom之間


看發展的趨勢,有可能被加入瀏覽器


推薦閱讀:

如何理解虛擬DOM?
如何用React做一個MVC項目?
在 componentWillUnmount 中到底應該清除哪些變數?
store的組織是扁平化好,還是分層級樹狀的好?大型的項目store該怎麼組織?
新手學習前端開發加了很多技術群有必要天天看群聊天記錄學習嗎?

TAG:React |