移動開發已經成為一股潮流,web開發者假如也想在此浪潮中衝浪的話,我推薦 ionic 這個跨平臺的移動應用開發框架。它的口號是 Build amazing apps in one codebase, for any platform, with the web
, 可以做到 write once, run anywhere
。
ionic1
基於 angularjs
,已經成為歷史。前不久釋出了ionic4
,做了很大的改動,最重要的一點就是使用了 Stencil 這個可以將自定義元件轉化為web Components
的編譯器,鑑於這個版本暫時還是beta
版本,不建議使用。
本系列的文章全部基於ionic3
,底層的Angular使用5.x版本,以後都簡稱ionic
,ionic3
之前基於Angular 4.x
版本,現在已經全面切換到Angular5.x
了,大家開發的過程中注意甄別,因為 5.x和4.x之間還是有很多改動的。
ionic
的成功少不了Angular
和Cordova
的功勞。
Angular
是 Google
推出的前端開發框架,使用 TypeScipt
語言進行開發,適合規模大,多人配合的專案。
Cordova
脫胎於 Adobe
的 PhoneGap
,後來其核心原始碼被捐給Apache
,改名為 Cordova
,是一個使用web技術的跨平臺移動應用開發框架。
ionic
是 Angular
的一些核心開發者,將 Angular
與 Cordova
結合起來,並針對移動應用的特點進行改造,提供了豐富的UI元件的跨平臺移動應用開發框架。同時,ionic
也提供了命令列工具 ionic-cli
,功能強大,簡單好用。
上圖可以看出 Angular
,Cordova
和 ionic
之前的關係。
個人認為 ionic
可以簡單解釋為成 Angular+Cordova
基礎上的UI框架,它使用 Angular
開發,提供了精美的UI元件,通過Cordova plugin
與原生功能進行互動,最後藉助 Cordova
命令打包成可以執行在不同平臺上的App,當然也可以只使用 www
資料夾下的內容當做可以通過瀏覽器訪問的 webApp
。
打包出來的Android App其實就是一個 WebView
,載入本地的www
資料夾中的網頁。網頁中可以呼叫 Native
功能就是通過 Cordova
這個橋樑。iOS同理。
ionic
不是簡單的把 Angular
和 Cordova
結合在一起,也做了一些改造,使之更適合移動開發。首先,ionic
拋棄了 Angular
中的路由框架,而是實現了自己的堆疊式頁面導航功能,通過簡單的 push
和 pop
方法,實現頁面的跳轉和返回,更符合移動開發習慣。其次,ionic
也針對 cordova native plugin
寫了配套的JS依賴包,使web開發者可以很快上手原生外掛的使用。最後,ionic
提供了豐富的適合移動應用開發的UI控制元件,比如,DateTime
,Toobar
等常用的元件。
ionic
的缺點也是顯而易見的,首先,效能,還是效能,安卓低端機上卡頓明顯,使用者體驗很差。其次,雖然 ionic
提供了大部分常見的與原生進行互動的外掛,但是假如你的需求很冷門,只能自己寫一個,比如說支付。最後,使用 Angular
這個框架,學習曲線比較陡峭。
下圖展示了應用開啟的過程及以開啟相機為例呼叫原生功能的流程,內容簡單,不過多解釋。
後記
本人在寫一個ionic入門的教學手冊 ionic3-handbook,還有一個基於真實專案的ionic專案HW-basic,感興趣的可以看一下。