前言
2020年的这个春节,注定要深刻在国人的记忆里了。我和大多数人一样,在此非常时期,响应国家号召久居家中。希望这场疫情早日平息,所有人都平安无忧,为众生祈福。
前因
这几天基本上都是和家人一起打牌,刚开始是写在纸上记录输赢结果,陆陆续续也写了好几页A4的纸了,比较麻烦些,而且过程容易出错,极度考验记录人的心算能力。作为一名程序开发者,还是想着用程序的方式去解决这个问题。
考虑到这个应用必然是个本地单机版,所以为了性能和开发速度,而且打牌的需求并不能够给我太多的时间,所以我选择了ionic和cordova打包成原生APP的方案。
过程
开发过程中,对于ui层面,并没有太大的问题,ionic提供的组件基本上齐全,唯一的一个小问题就是:基于Hammer.js的长按事件和ionic的content滚动有冲突,绑定该事件的区域无法滚动。官方github上并没有太好的一个解决方案,不过影响不大。
时间多用在了确定应用的数据结和ngrx接口。这次本打算试用下ionic的云打包服务,但价格感人,最终还是屈服于本地windows环境下打包。具体细节不阐述了,可以访问 gamble-recorder
结语
ionic这个框架,我从v1跟随至v2,当时主要是为贯彻公司的控制成本方针,想着一套代码,可编译发布到各个平台。也确实解决了公司多个产品的客户端需求。
不过随着产品的迭代,需求也越复杂,从ui慢慢转变到与硬件系统的交互,譬如NFC、支付、NFC、语音、摄像头识别等。这些功能需求ionic做不到,只能依赖Cordova,奈何Cordova插件生态不景气,自己开发插件却是心有余而力不足,以至后续类似的需求都被搁置。自此ionic就只作为偏UI展现类应用的开发备选方案。
这次重新再审视ionic的v4版,我发现以往的类库太重和性能问题在慢慢得到解决,就UI层面来说,页面跳转的流畅度和控件响应速度都比之前的版本好很多,开发方面,现在有ionic官方新推出的 Capacitor(替代Cordova),和 Stencil,可以构建符合标准的Web组件的编译器,不再受特定前端框架的限制或绑定,可以与任何其他现今主流的JS框架(Vue,React等)一起使用。再加上ts带来的强类型的支持~
接下来,ionic4可以考虑作为跨平台移动app的框架首选,或者等等即将来临的ionic5,我认为这个框架未来大有可为。