大概可以用下图概括:WAP -> WEB APP -> Native APP -> Hybrid APP
图片来源于网络
手机站点
时代背景
这里简单说一下背景,因为整体的设计上会有很强的时代印记。时间回到2010年左右,这个时候的手机市场还是功能机的天下,手机处理能力很弱。2g移动网络占据主导地位,网络慢,流量贵。用户大多会使用UC浏览器或者一些类似的浏览器,来节省流量,提升响应速度。
手机浏览器
这里不得不简要说一下当时的手机浏览器。这类手机浏览器主要功能是节省流量,加快访问速度,其次是展示网站内容。这么说可能是有些偏激,这类浏览器会过滤掉目标站点的一些html标签、js和css,减少返回的内容,加速页面解析。
实现
UGC起源于互联网,随着移动互联网兴起,很自然的想法是开发一个适合移动端使用的网站。作为人们在没有pc环境下的一个辅助入口。观念上的主次,决定了移动网站作为pc网站的一个简化版。所以我们将手机站点定义为一个新的工程,数据共享自主站点。
它的结构大致是这个样子的:
由于前面说的浏览器原因,为了保证更好的兼容性。页面使用的html和css很简单,没有使用js。同时还有一个很麻烦的问题,此类浏览器会丢失cookie,无法保证用户的登录信息。查阅tomcat文档,发现可以在url中使用jsessionid来维持session信息。
方案1,在url中增加jsessionid,结果并不和想象一样美好,无效。原因是线上tomcat版本较低,而由于公司的tomcat有一些patch,无法升级。
方案2,和方案1很类似,自己实现认证信息,添加在url中,很类似现在的认证token。
同时也考察了QQ空间,新浪博客的产品的手机站点,也使用的方案2实现,最终采用方案2实现。
WEB App
时代背景
网站虽然能一定程度上满足用户的阅读需求,但是无法使用手机的拍照等特性,用户对App的需求较强烈。H5被炒的轰轰烈烈,很有一统江湖的赶脚。phonegap等跨平台方案适时的出现了,这种低成本的移动端解决方案对web开发团队有致命的诱惑力。就这样,我们自己的WEB App出现了。
实现
- 将html、css、js打包到apk中,减少网络下载量。
- 通过dwr请求服务端,通过js本地展示数据,存在跨域问题。
- 使用H5存储实现客户端数据的缓存。
- 使用websocket方案实现push。
- 提供拍照等方法给js调用。
借一张图来用,它是这样的:
事实证明这个方案并不如想象的美好。H5或许是一个趋势,但绝对不是在那个时候。
http://36kr.com/p/149405.html
Native App
时代背景
整个APP使用WEB APP的方式来完成,发现了很多问题,会损失性能、原生特性等。所以我们走在了native app开发的路上,以android为例。
实现
- 大部分使用java开发
- 有时候需要引入web的页面,H5开发
- 性能要求高或者核心逻辑使用c、c++开发
Hybrid App
时代背景
现如今一个APP可能会承载公司各部门不同的业务,更像是一个APP平台。导致一个APP可能会很庞大,也对开发有更高的要求,比如:团队协作、发布、热修复、动态加载等。可能会用到更多 的技术来开发。
实现
- 平台native语言
- 脚本语言
- 跨平台开发
- 多团队协作
- 等等
总结
经历移动互联网发展的这个时期,很高兴有机会从服务端开发转换到App开发。多一种经历,多一种视角,多一种思考方式。以上内容只代表个人在特定环境下见闻,一定代表不了移动互联网的技术变革。