开发App已经有两个星期了。第一个星期主要尝试了下用ApiCloud、这周最主要尝试了下React Native。各有千秋吧。
##ApiCloud
###优点:
1、上手简单,对于做过web开发的人来说,上手非常容易。没几天就能上手。
2、而且提供了丰富的端和云api,还有很多第三方的api,可以节省了不少开发时间
###缺点:
1、在性能上不是很理想,在Android机上会出现卡顿的感觉。
2、在布局上,需要兼顾到ios、Android及他们各个版本webview的区别。
比如Android4.4一下的webview是不支持flex的,需要用hack的写法来保证兼容。而且真的很难保证在不同设备上的细节的一致。
3、无法在IOS上进行调试。让人很头痛。
4、无法很好的支持angularjs、reactjs、vuejs等,js的组织方式只能使用最传统的js的编写方式,无法使用html5的history和state,当然你可以把参数放到window的param里面。 这里推荐使用Vuejs,体验效果良好,但是只能单个页面单个页面这么来编写。
##React Native
###优点
1、相对于ApiCloud来说,在UI布局上来说。体验非常棒,有专门的flexBox样式来支持移动端响应式的布局。感觉应该不会出现非常明显的兼容性问题。所有长度宽度单位都是不带单位的,以数字直接来表达,这样也便于计算。同时也提供了一些对屏幕尺寸、密度计算的工具类。这就让适配不同屏幕(不光是尺寸,还有密度)做适配,带来了可能性,就看你要做的多深入。
2、虽然主要编写是在JS下进行,但是React Native也不光光是一个JS工程。在一个完整的RN工程中,包含了一个IOS工程和一个Android工程。 可以使用原生方式,对RN进行扩展和更改。
3、调试方式非常方便,可以在chrome里面查看日志,可以在ios模拟器中查看元素的模型。
4、RN可以使用ES6进行编写,非常方便,import、promise、export、class……看到这些关键词你应该懂的。整个工程可以把JS组织的非常漂亮。
5、最后一点,可能是比较重要的一点。在性能上,虽然没有原生这么好,但逼近原生。
###缺点 1、关于推送、第三方(比如微信分享、登陆、支付)估计要自己来实现。这个时候就需要具备Android、IOS两端的知识,对于我这样还没有原生开发经验的来说,是比较困难的。
2、对于数据的缓存,感觉不够透明,或者说我还没深入到这块。比如数据的缓存、图片的缓存。感觉我自己暂时还无法控制。
3、对于打包、发布来说,需要具备一定的原生经验(比如说签名)。如果没有,那么你暂时只能在IOS模拟器上进行。想要打包安装到其他设备上,你可能需要花点时间去研究下。
总结: 以上描述可能并未详尽,也或者并不完全正确。只是谈谈这几天的一些开发体验。 长远考虑。感觉RN是第一选择,开发体验真的不错。而且可以在很大程度上IOS、Android可以共用一部分代码。 但是就现在情况来说,已经被我玩掉2个星期了。 老板逼得紧。先安下心,用ApiCloud搞个出来吧。虽然感觉不完美,但是起码可以快速从无到有。