Hybrid-Native+H5,主流框架深度分析
導語:
近年來,隨著移動端app的廣泛使用,對於降低app的開發成本,熱更新等訴求日益增多。更多的APP採用了Native結合H5的混合開發模式,因此也衍生了大量的Hybrid框架。這其中有對載入H5做通訊和效能優化的框架,如Phonegap等,也有使用JS指令碼生成原生代碼的框架,如Facdbook推出的react native這一類的框架。
React Native
正如專案的名稱表露的那樣,React Native的目的是構建真正Native的應用。不同於傳統Hybrid框架,React Native完全脫離WebView進行開發,因為它掙脫了複雜的DOM,高效率渲染、流暢互動使使用者體驗得到非常多的提升。
它能使用夠使用同樣的語言同時支援iOS、Android平臺,減少了我們在跨平臺開發時對Native語言的不熟悉而產生的障礙。
使用React Native需要了解HTML、CSS、JavaScript與同為Facebook開源的React框架等相關知識且不易掌握;能看出React Native對於新手來說不太友善,不過React Native背後有著強大的Facebook技術團隊的支援以及其知名度,吸引了相當多的開發人員瞭解並使用它,使我們在成長的路上不會那麼的孤單、無力。
優點
- 相對於基於Web開發的hybrid框架,渲染效率、互動流暢度有明顯提高
- 使用相同的語言開發便能同時開發iOS、Android
缺點
- 需瞭解的知識面較廣、學習成本較高
- 雖然使用可以使用相同的語言開發兩種平臺,但是依然需要了解原生平臺的相關特性
- 無法實現列表檢視的重用機制,使在列表檢視擁有巨大數量時,導致記憶體攀升
Weex
最近較火的移動端框架 除了Reactnative,還有Weex,Weex官方的口號是Write once, run everywhere, Weex解決了的最大痛點就是使用者只要編寫一次程式碼,就可以跨平臺執行。它能幫助開發者解決跨平臺的適配問題,同時,又擁有著Native原生App的效能問題。Weex目前的大優勢是藉助阿里的大平臺,快速的迭代更新,有大批的使用者幫助其完善Hybrid框架,目前已較為成熟,文件豐富,接入方便快捷。
優點
輕量,分模組載入,Write Once Run Everywhere,
缺點
H5 標籤支援較少
Cordova
Cordova是由phonegap演變而來,在接觸的多家公司中,一開始大多數採用phonegap的解決方案,這種
前身為phonegap,歷史比較久遠,有很多公司在一開始接觸Hybrid用的都是這種方式,早起,讓不會Native的人,可以快速的用H5和js開發一個App,早起,iOS和Android都是使用的webview,現在,iOS和安卓,都有用jsCore, 大大提高了效能。
優點:
1.可以使用原生的js、html、css來構建一個應用
2.支援很多的外掛來去調原生的API的,這種外掛的庫和它的生態是非常完善的,也就是說一個前端開發者不需要懂原生就可以做
相對來說比較穩定;
缺點:
1.效能瓶頸就是在於webview的效能,如果像Android 4.1以下的webview它的效能並不是很好,在Cordova打包出來的APP效能就會有問題。
這個框架是一個比較重的框架,做Hybrid開發的話,整合在原生的app裡面,使得整個APP比較重;
Ionic
Ionic提供了一個免費且開源的移動優化HTML,CSS和JS元件庫,來構建高互動性的應用。它可以用框架中的CSS 實現有 native 風格的設計,不過相對於使用完整的 Ionic,更建議搭配 AngularJS 一起開發,從而建立完美的應用。
它有如下特點:
1 . 效能高,執行速度快,操作最少的DOM,非 jQuery且和硬體加速過渡;
2 . 設計簡單,並且實用,它為當前移動裝置呈現了完美的設計;
3 . 以原生SDK為藍本,便於移動端開發人員的理解,完成時通過PhoneGap釋出,達到一次開發,處處使用的效果;
4 . 核心架構是為開發專業應用建立,框架輕量級;
5 .一個命令就可以建立,構建,測試,部署你的應用程式在任何平臺上,只需要npm install -g ionic 就可以建立您的應用。
6 . 程式碼標準,後臺維護人員專注,具有強大的社群。
缺點
在瞭解Ionic的同時,還需要了解AngularJS,為開發增加了一定的複雜以及難度;
NativeScript
Native script是一個開源專案,用 JavaScript 語言編寫 app ,它和Weex有點類似,只需要編寫一次,然後它可以針對不同的作業系統(包括 Android,iOS 和 Windows Phone)產生對應的可執行程式碼,打包後,應用是按原生程式的方式執行的,並沒有開啟和執行瀏覽器,框架是將js指令碼翻譯成原生應用的api來執行的。
優點
1.一次編寫,跨平臺執行
2.英文文件豐富,中文文件較少
缺點
1.有一定的學習門檻
2.沒有完善的技術支援