本文是一篇關於我本人在使用 Cordova + Ionic 以及 AngularJS 開發移動App的過程當中的經驗的總結,它不是一篇基礎入門教程,而是和你們探討一下關於如何更好的使用這些技術開發一個更好的App,文章會天天抽一點時間完成,若是您有什麼問題或者想與我交流的經驗,歡迎隨時在本文下方評論或者郵件給我:54778899 [at] qq.com。css
聲明:這是一篇中立的文章,我無心於挑起孰好孰壞的爭論,這只是一篇經驗分享文,至於爲何選擇這種技術,由於我會這個,感受還不錯。前端
Cordova是一款開放源代碼的App開發框架,旨在讓開發者使用HTML、Javascript、CSS等Web APIs開發跨平臺的移動平臺應用程序,其原名稱之爲 PhoneGap,Adobe 收購Nitobi 公司後,PhoneGap 商標保留,代碼貢獻給了 Apache 基金會,而Apache 將其命名爲 Apache Callback,其後發佈新版本時,定名爲 Apache Cordova。git
Cordova是一個行動設備的API接口集,利用JavaScript存取這些接口能夠調用諸如攝影機、羅盤等硬件系統資源。配合上一些基於HTML五、CSS3技術的UI框架,如jQuery Mobile、Dojo Mobile或Sencha Touch,開發者得以快速地開發跨平臺App而不須要編寫任何的原生代碼。web
注意到由於Cordova自己還是一個原生程式,爲App打包時依然須要用到這些系統平臺的SDK。編程
本文將結合 Ionic 前端框架進行開發後端
Ionic是一個新的、可使用HTML5構建混合移動應用的用戶界面框架,它自稱爲是「本地與HTML5的結合」。該框架提供了不少基本的移動用戶界面範例,例如像列表(lists)、標籤頁欄(tab bars)和觸發開關(toggle switches)這樣的簡單條目。它還提供了更加複雜的可視化佈局示例,例如在下面顯示內容的滑出式菜單。瀏覽器
Ionic宣稱他們極度強調性能,而且經過限制DOM交互、徹底移除jQuery以及使用像translate(z)這種特定的硬件加速的CSS濾鏡觸發移動設備上GPU——與由動力不足的移動瀏覽器提供的交互相比這種方式提供了硬件加速的交互——等方式使速度最大化。前端框架
AngularJS是創建在這樣的信念上的:即聲明式編程應該用於構建用戶界面以及編寫軟件構建,而指令式編程很是適合來表示業務邏輯。[1]框架採用並擴展了傳統HTML,經過雙向的數據綁定來適應動態內容,雙向的數據綁定容許模型和視圖之間的自動同步。所以,AngularJS使得對DOM的操做再也不重要並提高了可測試性。服務器
設計目標:框架
Angular遵循軟件工程的MVC模式,並鼓勵展示,數據,和邏輯組件之間的鬆耦合。經過 依賴注入(dependency injection) ,Angular爲客戶端的Web應用帶來了傳統服務端的服務,例如獨立於視圖的控制。所以,後端減小了許多負擔,產生了更輕的Web應用。
我所使用的開發環境包括下面這些:
使用Mac開發前端有不少優點,對於我來說,最大的優點就在於我仍是一個Linux用戶,不少的Linux習慣在Windows下面老是會有一些不適應,再者,OS X的系統穩定性以及各類各樣優秀的App,也讓它一直都成爲個人工做利器。
我沒有像不少牛逼的大神們購買多塊屏幕,我只有一臺iPad Mini,而後還有一個叫做 Duet 的App,它可讓我把 iPad 做爲個人 Mac 的第二塊屏幕,通常不須要,可是它真的能提升個人工做效率,並且能夠直接使用到 iPad 的觸摸屏,這對於移動開發來說,很好。
我還有一臺 Lenovo 的 Yoga 3,裝了 Ubuntu,不過不多用,顯示有點兒彆扭,可是,比起其它的PC機,這臺仍是很不錯了,你們也能夠試試。
之前是Notepad++ 的忠實用戶,而後還有 Coda、TextMate、BBEdit、SublimeText 等等的,如今用的(並且可能之後會一直使用的)——WebStorm,軟件是收費的,我用的是盜版的,實在是沒有錢買,等之後有錢了必定補上。
固然了,WebStorm只是主開發工具,有的時候臨時須要修改某個文件的時候,我還會使用 BBEdit,由於啓動會比 WebStorm 快得多。
有的時候會須要將文件發佈至服務器上面去,我也沒有安裝FTP工具,直接使用的就是 SFTP,軟件使用的是 Transmit,從用蘋果的那一天開始就一直使用這個,沒有改變過,和Coda是同一家公司(我的?)出的。
打包工具是本身寫的一個Python腳本,裏面用到了三個第三方包:
bs4
jsmin
csscompressor
分別用於壓縮清理 HTML、JS以及 CSS,NB的Grunt、Gulp之類的一直沒用,也深深的感受,我沒有必要用,最主要是我徹底不懂啊,因此,一直沒有使用,就本身用Python寫,也很快,十幾分鍾就能夠把一個構建或者說清理打包腳本寫好。
Git
+ GitLab
,我使用的是Git進行版本管理,而後本身有一臺 Git 服務器,裝有 GitLab
進行包管理,有興趣也能夠看看我公開的 Git 庫,地址:http://git.osnuts.com。