React Native 該不該使用 Expo
什麼是 Expo
Expo 是一個 React Native 的開發工具,應該也可以說是在 React Native 上再建立一層框架,解決了許多開發上的麻煩以及增加了許多 API,但也有一些使用上的限制,所以要不要使用 Expo 可以說是在開發 React Native 時第一步要決定的事情,以下我會介紹一下 Expo 以及列出一些我覺得推薦/不推薦使用 Expo 的情境。
Expo 從開發到上架都幫你處理好了許多雜事,特別在 React Native 這種還在快速迭代發展同時又要跨雙平台的情況下,各種坑還真不是普通的多,例如最近 React Native 要升級 0.60 、 AndroidX 、 或是 google play service 更新之類的如果有用 Expo 應該都可以省下不少時間。Expo Client 也是個很好用的工具,讓你不用安裝 Xcode 跟 Android Studio 也能開發,對沒接觸過原生手機開發的人省了不少麻煩。各種 React Native 不提供(但有 React Native Community 或其他 library 的方案) 的重要元件例如 Camera 或是 Map 甚至 InAppPurchases 等等 Expo 也都幫你包好好 。
但 Expo 幫你做好了 JS 跟原生端的溝通,代價就是你不能自己去改動原生端的東西了(雖然有著 eject 之後改用 ExpoKit 的方法,但似乎用的人不多,所以在此不做討論),所以像我有需要用到台灣金流 Tappay 的 iOS/Android SDK就一定得脫離 Expo 了。
推薦使用 Expo
- 只是學習用或是 App 相對單純
- 你是 web developer 轉來寫 React Native,碰到原生的機會小
- 開發時程趕或開發經驗較少,或是有需要帶新人
- 需求較為大眾,Expo 的 API 已夠你使用
不推薦使用 Expo
- App 規模較大
- 你是 mobile developer 從 iOS/Android 轉來寫 React Native
- 開發時程比較充裕或比較有經驗,可以不靠 Expo 解決各種坑
- 有自己寫原生或串接 iOS/Android SDK 的需求