React Native 使用分享 — 五年小回顧

Sam Huang
RevtelTech
Published in
6 min readJul 25, 2021

投影片:https://revteltech.pse.is/react-native-5-years
react-native-nfc-manager:https://github.com/revtel/react-native-nfc-manager

React Native / React 顧問服務:https://consult.revtel.tech/

在移動裝置已經變成最重要入口的今天,APP 在商業模式中的重要性不言可喻。考慮到資源佈局及知識累積,APP 的開發方式在不同的團隊中作法大不相同。甚至可以涉及到 APP 和 Web 間的關係管理。

這篇文章我們擷取了 2021 年 7 月 22 日晚上「React Native 使用分享 — 五年小回顧」一部分的講座內容,算是個小小的紀錄。

活動緣起

這個分享是「五載復相逢,軟體二三事」的第二場活動(第一場分享請參考印刷業專屬電商 HiPrint 開發分享 — 以 GatsbyJS 打造高速 ERP / EC),把視角切到技術上多一點,用了五年多的 React Native 是值得聊聊的題目。

過往曾與 Adecco 及 Yourator 等公司合作分享過 React Native,隔了幾年回來看又有點不同心得。

感謝有參與的朋友,分享加 QA 共一個多小時的時間幾乎沒有人中離,希望讓大家都能有點收穫。

活動部分截圖,多謝大家的參與
活動部分截圖,多謝大家的參與

React Native : another cross platform solution ?

2015 年由 Facebook 推出的 React Native 先天承繼了 React 的諸多特性,面世以來一直廣受關注。

怎麼思考 React Native 比較好呢?如果只是將他當成又一個跨平台方案就有點可惜,參照 React 本質為 UI library 的出發點,在導入後持續扣住大前端的技術方向,便能不斷地深化對這個技術的心法理解。

此外不得不提的就是其對團隊資源配置的優勢,藉由 React / React Native 的技術組合,便能很好的統合對於技術的投資及管理。

諸多知名 APP 皆由 React Native 打造

為什麼我們選用 React Native ?

忻旅科技有個業務方向是以資訊技術協助商務做加速及提升,是以

  • 開發可控:除了知道做了會怎樣,也追求錯誤可預期
  • 資源平衡:最小投入內取得最高效能

便是我們技術規劃的主要方向。

如同之前選用 GatsbyJS 搭建高效能前端(參考以 GatsbyJS 打造高速 ERP / EC)及後端微服務、容器化,前端技術以 React / React Native 貫串開發及管理流程便成為我們的首選。

技術的高速迭代讓人崩潰

開發經驗分享

節錄部分在分享中提到的內容

  1. 妥善規劃共用部分,最大化資源效益
    考慮到 web 及 app 作為商務行為的延伸,很多邏輯往往是互通的。我們會以 UI 之外部分都要共用的目標進行開發 (screen / page / template 之外應能共用),妥善切割出 UI / Domain / Generic Logic 等多個層次。有時候甚至能將共用邏輯延伸至後端 (如 Node.js)
  2. WEB 先行可以降低風險及增加彈性
    很多時候一個元件的開發往往不僅只用在 app 內,在那個情況下我們會選擇開發 web 版本(搭配我們自身開發的 webview plugin)。如過往我們曾開發金融相關 app,其股票線圖有多種應用情境,不只在 app 內,也在網站上。此外 web 開發得益於開發工具的完整性(如 chrome debugger),能更進一步提升開發效率。
  3. 善用 HOC 等技巧封裝溝通成本
    隨著開發營運到後期,軟體難以掌握的點不僅在邏輯,也在資料源的複雜度提升。此時除了像 Redux 等狀態管理工具之外,HOC / RenderProps 這些抽象化工具也能提供不同角度的管理可能。
  4. 延伸 test case 覆蓋率協助 IoT 整合
    相較於高階語言,低階語言及嵌入式開發環境在 debug 上較不方便。過往我們在開發軟體整合方案時,會將韌體及 app 底層部分都抽象化出來以 test case 覆蓋做先期測試,如此便能降低未來實際對接時的風險。
  5. 開源開發 — react-native-nfc-manager
    取之於開源也該回饋給開源,結合我們在 IoT 上的背景,忻旅亦發起了一個開源專案 react-native-nfc-manager,在這當中學到了許多如何和國外開發者協作的經驗(甚至發現我們某個商業題目,對手使用此專案比我們早上市 …)
基於 web 的線圖可很好的獨立運作或以 webview 整合
https://github.com/revtel/react-native-nfc-manager
https://github.com/revtel/react-native-nfc-manager

結語

最終也在 Q&A 時和一些前輩/同好討論了諸如 react-native-web 的使用經驗及觀點,對我來說是個很充實的一個半小時。其實還有蠻多可以討論的點,礙於形式及時間不容易做到,希望未來還有機會。

期待下次再相會,再次感謝那天有來參與的朋友們:)

RevtelTech 忻旅科技 https://www.revtel.tech/
email:contact@revteltech.com
facebook:https://www.facebook.com/RevtelTech/

--

--

Sam Huang
RevtelTech

[ https://www.sam-huang.info/ ] 始於嵌入式系統,途經 Web / APP 再到區塊鏈。是個逐步由底層走向上層的軟體人,持續尋找技術和商模的平衡對接