本文是一篇关于我本人在使用 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。