① 如何評價 React Native android
我作為iOS開發者,最近嘗試了Android開發,感覺體驗很棒。團隊目前沒有專門的Android開發者,考慮轉向React Native。
首先,我想談談React。React對我的影響巨大,Facebook將這個庫推廣得非常好,這是一個思想上的勝利。以往,處理UI時最痛苦的是維護狀態,如一個布爾值和一個復選框要保持一致,你需要時刻關注它們是否一致。用戶操作改變復選框狀態時,事件中要修改布爾值;數據操作布爾值時,也需要更新復選框。更不用說更復雜的數據和狀態管理了。
React解決了這個問題,採用了游戲更新-渲染的思想,將數據變化與UI繪制變為單向操作。每當復選框狀態變化時,根據布爾值重新繪制。這樣,游戲以60fps運行時,每秒重繪界面60次,而顯示中(如iOS)的UI不會頻繁地`removeSubview`或`addSubview`。React引入了虛擬DOM,每當布爾值變化,重新渲染的是這個虛擬DOM,它是一個對象。React庫維護這個對象與實際界面(如例子里的復選框)的一致性。虛擬DOM會進行差異比較,僅影響實際界面上的復選框變化,如果操作頻繁,還有批處理更新來「降低幀數」。
虛擬DOM的存在,使得表現形式不再受限。虛擬DOM可以是傳統DOM、iOS的UIControl或UIView,甚至是Android的原生控制項,甚至是WebKit內核本身?(我司CTO郭達峰在react-europe上見到有人直接做了命令行界面表現層。)
React意外但情理之中地被移植到了原生應用開發領域。
對於iOS開發者來說,React Native(RN)初體驗時,我試寫了一個簡單的Hangman游戲實現(Joycehan/strikingly-interview-test-instructions)。代碼寫起來容易很多,尤其是狀態管理的思想,真的很先進。第一步,根據狀態和props繪制界面(如someUISwitch.on = someBoolean)。第二步,用戶在界面上的操作在事件里修改狀態。一旦更新狀態,RN會根據第一步將界面調整到正確狀態。
RN的最大缺點是技術棧對iOS工程師來說差距太大。雖然不必考慮lua或類似方案,使用熱補丁變得簡單,但ES6、JSX的學習曲線陡峭,加上理解babel、webpack等工具對iOS開發者來說是一個挑戰。對Web前端同學來說,學習iOS也是一個難題。
然而,RN的一大好處是應用更新變得方便,不需要考慮lua或其他方案,至少在某種程度上熱補丁變得簡單。有人已經在做平台了(apphub.io/)。
對於Android,RN出來後,我按照文檔配置環境,發現只需三步:在原項目執行`react-native android`使項目支持Android,將主界面組件文件名從`game_ui.ios.js`改為`game_ui.js`,並在`index.android.js`與`index.ios.js`幾乎相同的代碼渲染`GameUI`組件,整個demo在Android上完美運行。這意味著,原iOS代碼無需修改,這雖然是RN不強調的特點(不強調代碼一次編寫到處運行),但這一副作用很吸引人,我當即給CTO提交了Android職位申請。
考慮到系統差異,使用React統一三個端(iOS、Android、Web)時,可以允許組件自我知道如何分別繪制三個端,或者為每個端各自維護一個組件。盡管尚未深入實踐,期待有更深刻的感悟。
最後,我想說,Web前端世界日新月異。有人戲稱「RN是前端世界對iOS開發圈的侵略」,我對此深感佩服,彷彿iOS開發本身顯得落後了。擁抱變化。如果React有Swift實現,我估計會更開心。
附帶廣告,Strikingly採用了這套思想,我們的web端已用React重寫。歡迎前端開發者加入我們,我們在招聘各種職位(Careers at Strikingly),歡迎挑戰!
② reactnative 支持 android什麼版本
React Native 的開源標志著 React 已經全面覆蓋了主流平台,包括Android、iOS以及Web。通過這套跨平台的UI工具包,開發者能夠編寫一次代碼,就能在這些平台上實現界面的運行,這一特性極大地簡化了開發流程。使用React Native進行開發,可以顯著減少人力投入,並且加快開發速度,尤其是在處理新功能時,能夠極大地縮短開發周期。
具體來說,React Native在Android平台上的應用非常廣泛。它支持Android 4.4(KitKat)及以上版本的操作系統。這意味著大多數現代Android設備都可以運行基於React Native的應用程序。對於開發者來說,這意味著他們可以為更多的用戶群體提供服務,而無需擔心兼容性問題。React Native的這種跨平台特性,不僅節省了開發時間,還簡化了維護工作,減少了因不同平台而產生的額外工作量。
除此之外,React Native還支持iOS和Web平台,使得開發者能夠更輕松地實現多平台應用。這種統一的開發體驗大大提高了開發效率,同時也使得應用的更新和維護變得更加簡單。通過使用React Native,開發者可以專注於應用的核心功能開發,而無需過多關注不同平台之間的差異,從而能夠更快地將產品推向市場。
總之,React Native為開發者提供了一個強大的工具,使他們能夠在多個平台上快速開發高質量的應用程序。無論是對於Android平台,還是iOS和Web平台,React Native都展現出了其卓越的性能和靈活性,成為了跨平台開發的理想選擇。
③ 學android有必要學react native嗎
React Native For Android 的開源,標志著React在多個主流平台上的廣泛應用。藉助這套跨平台的UI工具包,開發者能夠用一套代碼實現針對Web、iOS與Android平台的界面開發,這無疑帶來了諸多好處。比如,人力成本的降低、開發時間的節省,以及iOS與Android版本發布時間差的縮短,使得開發新功能變得更加迅速。
然而,如果僅專注於Android開發,學習React Native可能並非必要。當然,這並不意味著React Native對於Android開發者毫無價值。例如,如果你的團隊或項目涉及多平台應用開發,掌握React Native無疑能提高開發效率,簡化代碼維護。此外,跨平台開發能力在現代軟體開發中越來越重要,擁有這項技能可以讓你在求職市場上更具競爭力。
另一方面,對於Android開發者而言,深入了解原生Android開發框架,如Android Studio和Kotlin或Java,依然是基礎。這些工具和語言是Android開發的核心,掌握它們能夠讓你更深入地理解Android平台的特性和限制,從而開發出更高效、更優化的應用。
總之,學習React Native對於Android開發者來說並非強制性要求。但如果你有志於多平台開發或者希望提升自己的技術棧,那麼掌握React Native將是一個不錯的選擇。
對於那些專注於單一平台(例如僅限於Android)的開發者來說,深入學習原生Android開發技術仍然是必要的。這不僅能讓你更好地掌握Android平台的特性,還能幫助你寫出性能更優、用戶體驗更佳的應用程序。
綜上所述,React Native雖然提供了跨平台的優勢,但是否有必要學習它,取決於你的開發需求和職業目標。對於多平台項目,掌握React Native無疑是一個加分項;而對於專注Android的開發者,深入了解原生Android開發框架則更為關鍵。