提前關于 React Native 的一些介紹
原文 http://segmentfault.com/blog/jiyinyiyong/1190000002523389
不知道上下文的同學可以掃一眼 CSDN 上的介紹:
http://www.csdn.net/article/2015-01-29/2823762-非死book-announces-react-nativeReact Conf 的視頻在這里:
http://react-china.org/t/guan-yu-react-native-xian-zai-de-xin-xi/241原文是 Hacker News 上的帖子, 我做了很粗糙的翻譯, 其中內容對視頻做一些補充:
https://news.ycombinator.com/item?id=8964935明天第二天的大會當中發布具體的信息之間, 這篇翻譯的內容也許有不準, 請參考英文跟進
我是 Jordan 我在 React 團隊(也是 React Native 團隊). 這個線索已經有一些很棒的問題和看法了.
React Native 圍繞著生產力(當然還有能夠使用 React 這套放棄)提供了大量的方便,
不過因為有很多關于性能的問題, 我想我還是分享一些我個人關于它的看法.
React Native 和其他的方案區別很大, 由于:
-
我們并不是希望給你一個神奇的戲法能讓在你不改變任何的開發哲學/習慣的情況下就能自動生成出很棒的移動應用體驗.
如果你在做移動開發, 你想要很棒的用戶體驗. 你必需是要關心性能, 必須關心怎么編寫精細的交互.
任何優秀的移動端體驗后面, 都需要很專心的人. 不要相信別的說法.
不過, 我感到相比而言要達到那樣有些的效果, React Native 要求開發開發者做的工作, 比其他我見過的備選方案要做的工作要少得多.
-
React Native 完全不用 DOM. React 原本用來解決瀏覽器開發中出現的, 不可預測的編程實踐當中常見的性能問題,
但是也僅僅能幫你做那么多而已.
React Native 提升了一個層次, 不止于瀏覽器所能做的.
React Native 展示的 ReactJS 總是更多地偏向于 "zero DOM" 而不是 "virtual DOM"(跟大家以為的相反).
-
React Native 也很特別, 因為我們想要繼承一些 Web 開發當中好的地方.
這是因為我們只是想要性能, 想要 Native View 的資源的控制能力, 而不是要拋棄 Web 開發優秀的內容.
在 React Native 當中, 你可是使用 CSS Flexbox 對 Native View 進行布局,
同時有很多很熟悉的樣式屬性, 但是不會有泛濫的 CSS style reflow.
事件系統也跟現在 React 應用當中的一致, 因為類庫的代碼是一樣的.
按照 Web 開發中讓我們高效開發的樣式/布局的子集來構建應用,
那樣開發者就能在當下就構建優秀的 Web 應用, 而不是把時間排到未來.
我認為真的, 相比鼓勵開發者拋棄任何哪怕有點像 Web 技術的東西然后學一門完全不同的工具鏈(甚至兩門三門), 這樣要好得多.
-
React Native 特殊的地方還在于它可以用 JavaScript 來寫高質量的應用.
在瀏覽器當中, 你很可能要對付一些低層級的限制, 然后你沒有辦法.
或者是不能訪問平臺上的控件(在 scroll view 當中包含 physics/Maps),
或者是你在實現當中總是被圖片解碼干擾, 沒什么辦法.
用 React Native 的話, 你可以有一些辦法了.
你可以在 ReactJS 應用當中使用那些永遠不會用 JS 來實現的 view(比如地圖),
而且你的構建當中可以用一些更高的執行粒度的 block,
(多線程解碼的 <Image />
)(不使用 DOM 的 <View >
block)
結果是這帶來了質量方面到了空前的層次的感覺, 而且對應平臺的特征.