移动端开发

首先需要明确的是移动端开发是建立在PC端的基础上的。为什么这么说,最开始是笔记本的普及,随着技术的更新和迭代,配置一般的上网本价格都是大众消费能力以内,所以每个人都可以轻松的通过笔记本电脑阅读,购物。但就是最近几年,得益于国内某些”知名”手机制造商,让一部4英寸的智能机在1000元以内就能到手,所以可以想象的是国内智能手机普及是多么的吓人,更不用说潜在的群体学生和老人也加入到其中。

从笔记本电脑到移动智能设备的过渡是如此之快,以至于商家有些猝不及防,自己的产品不仅能在PC端能很好地展示,相应的在手机上也是正常展示,这就催生了移动端开发。

自己一开始就是做的移动端,所以对PC端开发不是那么的熟悉,不能很好的说出两者的区别和相似点,如果你有好的建议和意见可以在下面留言给我。

现在一个成功的互联网产品离不开3个部分的开发,PC、Android、iOS。移动APP的开发有两种不同的路线,NativeAPP和Web APP。这两种路线的区别类似于PC时代开发应用程序时的C/S架构和 B/S架构。更流行一些的是hybrid app开发,这是一个什么概念呢?后台提供API接口可以给三方使用,在原生的APP内嵌套H5页面,安卓和iOS都可以使用。

Native APP,即所有的程序都由本地组件渲染完成。这类APP优点是显而易见的,渲染速度快、用户体验好;缺点同时也十分突出:出现了错误一定要等待下一次用户进行APP更新才能够修复,而且开发成本高。Web APP的优点恰好就是Native APP的缺点所在,其页面全部采用H5撰写并存放在服务器端。每次进行页面渲染时都从服务器请求最新的页面。一旦页面有错误,服务器端进行更新便能立刻解决。不过其弊端也容易窥见:每次页面都需要请求服务器,造成渲染时等待时间过长,从而导致的用户体验不够完美,并且性能上较Native APP慢了1-2个数量级;与此同时还会导致更多的用户流量消耗。另一个缺点则在于,Web APP在移动端上调用本地的硬件设备存在一定的不便。不过这些弊端也都有相应的解决方案,如PhoneGap将网页提前打包在本地以减少网络的请求时间;同时也提供一系列的插件来访问本地的硬件设备。然而,尽管如此,其渲染速度上还是存在一定的差距。

Hybrid APP则是综合了二者优缺点的解决方案。饿了么移动对于此二类APP的观点在于,纯粹展示性的模块会更适合使用Web页面来达到渲染的目的;而更多的数据操作性、动画渲染性的模块则更适合采用Native的方式。

经过这些年的业务发展,Hybrid提供的展示界面更新方案也逐渐地无法满足APP更新迭代的需要。因此越来越多的动态部署的方案被提了出来,比如iOS下的JSPatch, waxPatch,Android下的Dexpose,AndFix, ClassLoader,都是比较成熟Hot Patch动态部署解决方案。这些方案的思路都是通过下载远程服务器的代码来动态更新本地的代码行为。
React-Native则属于另一种动态部署的方案,其核心原理在于通过JavaScript来调用本地组件进行界面的渲染。
而饿了么移动APP发展到今天,各个APP综合用户量已经过亿。因此一个非常小的Bug所带来的问题都可能会直接影响到几万人的使用。为了保证APP的稳定性和健壮性,Hot Patch方案也就成了当下最有待解决的问题。
根据80%的用户访问20%页面这一80/20原则,保证这20%访问最频繁的页面的稳定性就是保证了80%的APP的稳定性。因此,饿了么移动对于部分访问最频繁的模块进行了React-Native备份。当这部分页面出现问题时,APP可以通过服务器的配置,自动切换成React-Native的备份页面;而与此同时开发人员开发一个小而精的Hot Patch来修复出现的问题。当Hot Patch完成修补后,再切换回Native APP的原生功能。