大家好,我是馬在飛的飛。
常有客人會問要寫 APP 要用那一種比較好,這類的問題網路上回答不少,但基本上要看你做什麼來決定,對於非技術領域的人卻無從判斷起:到底我的APP ,業務邏輯難不難?效能吃不吃重?畫面複不複雜?所以等於還是沒回答,所以我針對非技術底的客戶從商業角度來建議:
我先簡單描術一下自己的APP的經歷
(年紀大了,時間會有一些誤差,但每一種都踩過坑),
2010 iOS objectC, android java ( MVC )
2012 phoneGap / JQueryMobile / Sencha touch (html5, web)
2016 React-native (redux)
2017 Android Kotlin ( RX, MVVM, data-binding) iOS Swift (MVP, MVVM, VIPER, other design pattern )
2018 React-native (hooks)
2019 Flutter (mvvm, scoped , provider, provider,)
2020 Flutter ( bloc)
直接說結論:如果你來找我們做APP,我首推 flutter / react-native,原因很簡單: 節省時間和金錢,Time to market 愈早愈好(MVP的概念)
Q1. 那有沒有可能有 RN/Flutter 做不到的功能?有,但機率很小,如果真發生,我們有native
Q2. 那 flutter 和 rn 有沒有差別?有: 對經營者來說,很大的差在維運(找工程師來維謢)
1. 找我們外包APP後的功能新增或維運交給我們, 我們會用 flutter,效能較佳,社群支援度提升很快。
2. 如果你要自己找工程師維運可選 RN,因為產品不只APP,也會有後端甚至Web, RN 用 node-js ,可以寫 Server (express, AWS lambda, …), 也可以寫 Web (react js, vue …),在台灣 小公司/新創 要找工程師不好找,如果只有nodeJS可增加人力效率。
當然有另一種選擇是用 flutter + AWS amplify 變成偏前端的全端工程師,但這變成你的商業邏輯都集中在APP上,另一種相反做法,則讓APP只是資料呈現和操作互動,讓主要的還輯在後台;各有優缺點:(個人偏好第二種)
1. 集中在APP端,Server的負載低,費用也低,但是一但有發現bug, 改完APP重新送審,中間的等待堪稱煎熬。
2. 另一種做法就剛好相反,但Server的費用高,但如果發生問題,大部分要解決可能更新 Server 就好了。
最後身為一個APP工程師,目前 flutter 的 漲勢看好,但 react-native / react 的 Hooks 確實好用簡單;但不管那種,你都最好都要有 native 的基礎,才能應對各種問題,而 KMM, 雖然沒寫過,但能理解,在 kotlin/swift 寫習慣後再回去寫別的語言都會很懷念它們的好,但做一個產品涉及到的不光只是APP端的開發語言,還有後端及網頁,還有未來的維運。
若你有軟體開發或專案管理的需求,請點擊此並留下你的需求,我們會盡快與你聯繫
前往馬在飛科技官網