ionic github官方上的定义是:ionic是开源移动应用开发框架,用web技术以构建高质量的原生应用和类原生Web应用(Progressive WebAPP)。
Ionic is the open-source mobileAPP development framework that makes it easy to build top quality native and progressive webAPPs with web technologies.
这句话不长,但背后包含了很大的信息量。从 ionic官网 首页来看,其卖点之一是:Write Once, Run Anywhere。从其实际发展来看,2015年5月Ionic v1.0发布,到17年4月发布V3(为了兼容Angular V4;17年2月V1更新到V1.3.3)的短短两年时间,ionic已支持一套代码写得App可部署至iOS,Android,Windows各应用市场,而且还可以无须安装的方式部署为WebAPP(你可能想到了微信小程序,二者理念是一致的、PWA提出得早一些、知道的人相对少)。
Ionic的Write Once, Run Anywhere也得到了众多开发者的支持,官方数据是400多万app由ionic框架构建(这么大的基数,想没有牛逼的Ionic APP都难)。这个slogan不禁让人联想起了java的营销口号,虽然java曾有Write Once,Debug Everywhere的质疑,也有牺牲运行效率的诟病,但其成功地促进了开发的生产力提高。从1996年java问世后20年的今日,没有java应用的企业已经很少了吧(看看周围有没有android手机就行)。
在本书开始写作时,Ionic 2还比较新,有不少令人心动的更新(比如执行效率的大幅提升),但是开发productiveAPP,采用Ionic 2可能会有点早。在2016年8月6日(美国的精酿啤酒节National IPA Day),Max Lynch谈及Ionic 2时可以感受到Ionic2还在完善中,社区支持也还刚刚开始。详见: https://www.youtube.com/watch?v=h7yZjSiype4 ,顺便感受下Max本人的风格,作为时不时自己酿啤酒的码农,我觉得他关于啤酒说得少了些 ;)...。
本书例子全部基于V1.x,有这么几个原因:
1. Web开发者都懂javascript,用v1开发不用学习新语言,而且过往Web项目的库存都能拿来用在App开发上;
2. 总归要用javascript。由于v2兼容js,实际项目中,我们用typescript做框架,后台代码还是javascript为主(支持typescript的BaaS毕竟在少数),已有的v1代码能复用的不一定要重写。
3. v1不仅有活跃社区的长期沉淀,而且官方也在持续更新,毕竟javascript社群的需求大;
4. 用v1.X再学v2切换会比较平滑,上来就v2的话,代码中也少不了js,这样会增加学习成本。如果全都是面向对象也就算了,假设我们用ionic2 + parse server,代码就是混合的,即有ts也有js。v1.X就能达到的事情,不用赶潮流、有效就好。
【参考】
Progressive WebAPP:模仿原生应用的Web应用
http://www.infoq.com/cn/news/2015/11/progressive-web-app
ionic创始人Max写得:What are Progressive WebAPPs?
http://blog.ionic.io/what-is-a-progressive-web-app/
Ionic Progressive WebAPP Demos
ionic v1.0 发布
https://blog.ionic.io/announcing-ionic-1-0/
ionic v3 发布
https://blog.ionic.io/ionic-3-0-has-arrived/
ionic v.2 中支持desktop
https://ionic-news.com/building-mobile-desktop-apps-with-ionic/