1.1 从移动开发说起
移动Web开发属于前端开发的一个子集,是指在移动设备上的Web前端开发工作。
1.1.1 关于移动开发
以iPhone为标志的移动设备的爆发为起点,用户每天的上网方式发生了很大改变。原本固定地点的PC(Personal Computer,个人计算机)互联变为了如今随时随地的移动互联,几乎人人都拥有一台属于自己的智能手机,时时刻刻与世界的任何一个角落发生着联系。
传统前端开发者的日常工作内容也悄悄地发生了变化,开始由PC端迁移至移动端。同时,开发技术也不断地升级换代。对于移动开发来说,各种技术之间的关系如图1.1所示。
图1.1 移动开发关系示意图
1.1.2 移动Web开发历史
在前端开发这个大领域,移动Web前端开发虽然被认可的时间比较晚,但是发展势头比较迅猛。在HTML5的带动下,出现了一系列新的标准和技术,前端开发框架也如同雨后春笋般涌现出来。诸如Google、Facebook、阿里巴巴、腾讯等这些互联网巨头,率先嗅到移动Web前端开发的重要性,开始大规模地对Web前端进行重构。同时,也有越来越多的公司加入混合应用开发的队伍中来。
在2005年以前,主流网页的页面风格比较简陋,而且没有过多交互。通常,后端工程师会使用后端模板完成页面渲染。同时,后端工程师也会书写少量的JavaScript代码完成一些基础的页面交互,如验证表单输入信息。这个时期的特点是,前端的工作主要指页面制作,通常由后端工程师使用后端Web框架完成,或者由UI设计师完成。
Google在2005年推出Web邮箱Gmail。为了提高用户体验,Google使用了大量的Ajax技术,将Gmail实现为一个单页应用,JavaScript作为第一编程语言在项目里被大量使用。
这段时间还是纯粹的PC时代,在这期间,也有Web前端工程师的称呼,但概念其实比较混乱。有可能指的是UI设计师,也有可能指的是偏Web开发的后端工程师。随着PC Web应用的日超复杂化,大量具备软件工程知识的开发者慢慢地转向前端领域,促进着该行业的快速发展。
随着智能手机的普及,PC业务慢慢向移动端转移,移动端APP开始大面积兴起,业务版本的快速迭代,也使得原生移动的开发方式的缺点暴露得越来越明显。除开发成本过高以及同一个APP需要在iOS和Android端实现两次之外,最致命的缺点是每次更新都需要发版,用户也需要重新安装APP。
为了解决这些问题,在2012年,Hybrid技术开始被大规模使用。Hybrid开发的APP基于Web技术,一套代码多处运行,而且可以达到即时更新的效果。为了让Hybrid APP能够接近Native APP(原生应用)的视觉体验和交互体验,对Web开发者的能力要求也达到了一个新的高度。
Web前端技术不断地向纵深发展。在纵向上,Node.js把边界扩展到服务器端开发;在横向上,React Native试图使用Web技术开发Native APP。在新兴领域,如VR、AR、物联网等,也都在试图制定相关标准。其他方面,如微信小程序,也是使用Web技术开发的。
回顾历史,展望未来,Web前端希望的定位是能够扩展到所有与表现层相关的领域,解决人机交互的问题。
1.1.3 移动Web开发的问题
移动Web开发也存在很多问题。
浏览器种类繁多、参差不齐。
除了系统原生浏览器,还有很多第三方浏览器,如UC、百度、腾讯、360、遨游等。这些浏览器对HTML5的支持程度不一,对网页的渲染和交互也各有不同,除此之外还有一些浏览器性能堪忧,这大大增加了Web前端开发的成本。
网速仍然是性能瓶颈。
在PC时代,网速是困扰用户和开发者的一大难题,到了移动时代,这个问题更是被加倍放大。移动设备所处的网络环境差,是客观存在的普遍现象。无论是2G、3G还是4G,网速都是阻碍Web应用发展的一个瓶颈。很多时候,开发者都要为网页快速加载做质量上,甚至功能上的让步。
多框架带来的高门槛。
在众多开发技术中,Web前端可以算是比较易学的一种。它没有服务端错综复杂的业务逻辑,也不用配置臃肿的开发环境,JavaScript语言更是简单轻量。但是如今,为了解决Web前端开发工程化、模块化以及开发和维护成本等一系列问题,出现了一大批前端开发框架。别说新入门的开发者,即便是有多年经验的前端高手,想要全部掌握这些框架,也是一个艰难的任务。
当然,这些Web问题随着时间的推移,技术的不断进步,会被一一解决。
1.1.4 移动Web开发的前景
近两年,市场对Web前端工程师的需求非常旺盛,读者可以从各大招聘网站的统计数据感受得到。同时,Web前端行业一直在扩展自己的应用边界,前端已不再是一个只有HTML、CSS和JavaScript的领域,因此读者也应该不断地对自身技术边界进行开拓。
1.1.5 比较桌面和移动端Web开发
PC Web和移动Web开发所需要掌握的基本知识体系并没有太大区别,不同的只是终端,如电脑、手机,终端具有不同的特性。
总之,如果以前从事过PC Web开发工作,现在转向移动Web开发,PC Web的绝大部分知识仍旧被需要,并且依然有效。当然,开发人员还需要学习一些与移动Web开发相关的新知识。