6
React.js Conf 2015 Keynote 2 - A Deep Dive into React Native | Engineering Videos | Facebook Code (code.facebook.com)
IngramChen 積分 5

題外話。

Facebook 是個奇怪的公司,它很大,它擁有廣大的用戶,但是它卻沒有自己的平台。瀏覽器沒它的份,手機 OS 也沒有,桌機也沾不上邊,硬體方面更不用說了。它們曾經做過自己的手機 + launcher ,但是失敗的很難看。

他們是有人材的,是有能力推出新技術的,但是因為沒有平台,他們的技術 被迫 只能限制在一種風格裡 -- 就是依存在別人的平台之上,自己再包一層,重新建立一套標準。不過那個 標準 最後也只是假標準,因為 Facebook 不擁有平台,它沒辦法把他們的創見進入平台的標準中。

比方說最近有一篇講 React is terrible idea1 ,裡面講述 Facebook 的 React 架構種種不是,主要原因是它偏離標準太遠,virtual dom 基本上是把 dom 給丟了,然後還有公司寫了 react canvas,一整個 離題 的概念。瀏覽器平台主推的是 web components,作者呼籲大家應該採用這類標準,而不是走 Facebook 那種偏門,讓開放的大門越走越窄。

那篇文章有點偏激,不過他點出 Facebook 的困境與策略。擁有平台的公司是這樣的:如果 Google 想推行 web component 的概念,他們就在瀏覽器加入這功能,變成原生的,推行一陣子大家接受後,剩下的只要再遊說 mozilla 和 microsoft,讓它進入標準就好了。Google 的 SPDY 到 HTTP/2 的進展也是如此。

Facebook 想擁有自己的東西,但又不像其他大廠擁有平台,可以自己玩。造成發展的方向很奇特,自己弄一套標準和概念,但沒平台買他們的帳,夾在中間前進不了 (不過他們的創新概念會被別人吸收就是)。React Native 是個很厲害的發明,但只要 Apple 哪天換了個規定,說 XXX 不準用在 iOS 裡,或是 iOS 9 出了別的完全不同的體系,React Native 馬上就死了,就像當初 Flash 的命運一樣。

siuying 積分 4 編輯於

在我看 React 其實只是一個概念的實作。有去完 React Conf 的人當場就說了:「我現在才知道我不是去了 React 的 Conference ,而是一個 Functional Programming Conference。」[請求來源]

React 現在的實作用 Virtual Dom 和 HTML。Flipboard 的 react-canvas,或者 react-art 其實只是不同實作。 某天 Web Component 真的成了標準,不用幾天就可以有 react-web-component 的 demo 出現吧? (看過 Netflix React Conf 的 talk1 他們是這樣實作他們的 React Gibbon Widget 的)

React Native 是個很厲害的發明,但只要 Apple 哪天換了個規定,說 XXX 不準用在 iOS 裡,或是 iOS 9 出了別的完全不同的體系,React Native 馬上就死了,就像當初 Flash 的命運一樣。

只要有一天 Apple 有 JavaScriptCore ,無論 iOS 有甚麼變化也不能阻止他們吧,因為 react native 的架構完全是普通 App 會用到的。 Application Logic 因為在 JavaScript,需要改動的部份也就是 render engine,相對來說反而是 native 的開發者更新需要做更多事吧?

又像 AsyncDisplayKit 之所以要重新做那麼多事,不是他們沒事很閒,而是因為 UIKit 只能在 main thread render。要做到 Paper 那種高效能動畫只能把 View 分開在背景 render ,但那要手動做很多工夫, AsyncDisplayKit 就只是把這些抽出來而已。有一天如果 UIKit 支援了 async render ,那 AsyncDisplayKit 自然也無用武之地了。

IngramChen 積分 1

不會阻止他們用舊的,但有可能 iOS JavaScriptCore 忽然就不更新了,例如 Apple 想推一些新東西,希望大家轉到新架構,所以不想 js 跑太好之類的 (Apple 說砍 Garbage Collection 就砍)

而擁抱標準架構的開發者,Apple 可能會替你準備 XCode 讓你順利轉移。但用 Facebook 的架構就得自求多福了 (因為不是標準..)。

我不是說 React 不好,主要的論點在於在 Facebook 手上的技術要推廣進標準不容易,很容易就被平台商主推的東西取代,而 Facebook 面對這種情況無計可施 (最少目前看來)

siuying 積分 1 編輯於

我覺得用 React (+ Flux) 跟 Angular 是完全兩回事。Flux 基本上沒有任何 framework,只是一個 architecture 而已,React 的 API 也很少。所以 React + Flux 基本上就是一個 pattern 而已,它的 code 也只是 JavaScript。而 Angular 那類是一個需要很大 commitment 的 framework,有一天他們不在流行的時候那些 ng-repeat 也就完全是廢物了。

IngramChen 積分 0

半斤八兩吧

React 如果不流行了,那些非標準的 ReactComponent, JSX 誰可以維護呢?都嘛要重寫....

siuying 積分 2

我是講 Flux , React 就是 render view 的技術,像一天由 Mustache 轉成 Handle Bar 當然要重寫了。再說這技術很 Lightweight ,一大堆人跑出來說用幾千行就 replicate 出來啦...