ionic混合APP开发小结

如果一个前端想要开发APP,并兼容Android和IOS,那么ionic是一个不错的选择。

前言

被分到一个项目上做app开发,由于项目没有充足的成本来分配一个安卓+一个ios开发,所以就选择了混合app开发——使用前端h5代码打包发布成2个平台兼容的代码,真正意义上write once, use anywhere。由于我并没有APP开发经验,刚开始听到让我开发APP,我是
懵逼的,就算有react native, 可是RN始终需要原生人员来提供底层设备接口。无奈之下通过多方搜查了解,打听到还有
ionic这个方案。于是就看了看官方文档,下了个demo撸了一下,发现用起来还不错,兼容性也比较好,只需要微调样式,而
框架里用了angular,并封装了webpack,gulp,scss等前端工程化工具,且不需要你去配置,他都帮你搭建好了,你只需要敲击命令即可打包构建,写起来就跟写前端一样的模式,他的底层是用了cordova来提供底层设备接口,并且官方
接口也比较多,社区发展的比较成熟。经过两个月的996,终于到现在完成了2个大的业务模块,并成功安装到安卓上
进行内测。整个项目的技术栈是ionic(UI)+angular+nodejs(中间层)下面就分条介绍一下整个项目中的技术点。

ionic

ionic是一个很不错的手机端APP UI库,我第一次接触它是在2015年的时候,那时候它还只是一个纯粹的ui样式库,现在
它已经发展到了v4版本,并自带原生APP接口和angular结合,往混合APP方向发展。他的一些组件也是高度还原
原生APP样式。在用ionic写样式时, 是每个页面组件的根标签,分别对应
APP页面的 头部内容底部,在写html时,要尽量使用ionic提供的组件,因为他的组件已经处理过了安卓和ios的样式兼容。
如果还是使用div的话,放到真机上测试时,发现会有很多兼容性问题。

ionic不仅提供了UI样式,还提供了模拟原生APP的组件,比如modal弹窗组件,list列表组件,nav路由组件等,这些组件并内置一些通用方法,比如modal的显示隐藏,路由跳转,
数据传参,list列表的上拉加载,下拉刷新等方法。

ionic-angular

js框架是搭配的angular,angular是一个js框架,他和react,vue不同的地方在于,angular内置了http,pipe等方法——它是一个框架,你需要按照他的文档去编写
对应的方法模块,包括按需加载。

jwt

全称jsonwebtoken,现代化的用户权限验证机制,他和cookie不同的地方在于,首次设置cookie后,只要在同一个浏览器里访问,cookie会自动传输到服务端,而jwt的机制
是首次登陆时需要在服务端验证用户通过后,在服务端生成token返回给前端,接下来每次接口请求时,需要前端在请求头中加上Authorization=token,服务端接收请求时,需要先验证
该token,如果token正确,表示该用户是有权限的。所以在http方法请求时,手动加上Authorization字段即可。

nodejs

由于项目规定不能暴露真实数据服务器地址,所以接口需要在node层去转发接口,合并请求,并在node层设置CORS允许跨域,所以node层就在接收到请求时,先判断是否带token,如果
有token,再允许接下来的业务处理。

路由

路由是使用的ionic自带的navControl,直接调用push(组件,options)即可跳转到对应页面,值得一提的是,由于在APP端没有返回键,所以它提供了一些方法可以使你改变
当前路由栈,极大的方便了某些需要改变路由栈的操作。

数据共享

angular的数据共享并没有像vuex,redux这样的库,你可以自己建一个js模块文件,里面存放一些全局数据,然后根据自己的需要来共享数据,如果需要规范一些,那就像
vuex一样自己去组织这些方法吧。

Typescript

angular自带ts规范,它可以更加规范你自己定义的方法和参数,使你的代码变成强类型,减少代码bug的发生。

自定义app参数

在根目录的config.xml中,可以自定义修改关于该APP的名字,icon,启动图等,也可以自己添加app中需要用到的底层插件。

发布

在真机测试时,ios遇到一些问题,在更新成最新版Xcode后,成功可以真机测试,这里不再赘述,总之产生问题时,及时google并去ionic的github上去搜索,一般你遇到的
问题,别人都遇到过。

(完)