HTML5和Native APP都很容易理解。爲了獲得HTML5的移植性和移動本地應用的高性能,搞出來一些混合APP的解決方案。
比如Apache的Cordova(也就是以前的PhoneGap),其軟件架構如下:
Cordova的工作原理是生成一個內置webview控件的容器app(這是個本地app),然後在webview中運行html/css/js的代碼,
如需調用本地服務如相機/傳感器,則通過JS本地橋接器來執行。
這種方式的混合APP本地化的比例很小,本質上和Web程序更爲接近,因此性能不佳。
爲了追求更好的性能和本地化體驗,有些框架扔掉了WebView,而直接提供了UI組件的JS接口,架構如下:
這種混合APP本質上更接近移動本地應用,也因此需要針對不同的平臺做定製開發。
後面這種解決方案主流的有微軟的Xamarin、Facebook的React Native、Google的NativeScript。
那麼在客戶想要移動應用的時候,究竟該怎麼選擇呢?
基本上我們要準備一些問題,來幫助客戶搞清楚實際想要的是什麼,然後提出自己的建議。
1. 是否需要發佈到應用商店
如果是,那麼應該選擇移動本地應用或Hybrid APP。
2. 是否要給APP定價
如果是,同上,只有應用商店才支持下載付費。
3. 是否需要調用傳感器、相機等底層本地接口
如果是,同上,因爲純HTML5無法訪問這些接口。
4. 性能是否是第一考慮要素
如果是,同上,因爲用HTML5開發一個FPS遊戲,操作響應會比較糟糕。
5. 項目預算如果預算有限,那麼可以優先選擇使用HTML5開發。如果預算不限,希望通過更多的渠道接觸用戶,則可同時招iOS、Android和HTML5。
6. 是否想開放應用程序中的內容以提高SEO
如果是,建議選擇使用HTML5開發。
7. 是否是“通用”應用程序
比如外賣、項目管理、電商、博客這些,建議使用Hybrid APP或HTML5。
8. 是否想設計個性化
如果是,建議使用HTML5和本地應用,Hybrid APP通常是長相雷同的。
最後,我個人認爲Hybrid APP就像是特色社會主義,是和現狀妥協的產物,將在HTML5初級階段長期存在。
遠方依然在純HTML5應用,而本地應用無論現在還是將來都仍會佔據需要更多底層設備支持的領域(但也意味着空間將縮小)。