前端开发:何去何从?

2014,前端开发经历了惊心动魄的一年。Web 标准上,HTML 5 正式发布;Web 载体上,移动互联网从通讯设备(手机)拓展到了可穿戴设备、智能家居等领域;Web 产品上,社交、电商、支付都在通过各种终端开拓新的交互场景,渗透到了人们生活的方方面面;Web 技术上,Native + Web 的 Hybrid 模式视乎为解决移动互联网时代软件分发部署之苦、跨平台跨终端之痛迎来了一丝曙光。

在新的时代面前,前端开发应当何去何从?笔者试图通过回顾前端开发的历史,总结前端开发的现在,与大家一同思考前端开发的未来。

很遗憾,由于笔者的知识范畴有限且未能亲身经历20世纪90年代至2011年期间 Web 前端开发这段波澜壮阔的历史,所以行文中难免会有错误、遗漏之处,欢迎大家指正和补充。

过去

石器时代:20世纪90年代

Web 载体

爆发了第一次浏览器大战,最终以 IE 胜出而告终。2001年 IE 6 发布。

Web 标准

1991年诞生了 World Wide Web、HTTP 和 HTML,1995年诞生了 Javascript、Java 和 PHP,1996年诞生了 CSS,1998年 CSS 2.1 正式发布,1999年 CDN 诞生且 HTTP 1.1 和 HTML 4.01 正式发布,2000年 ECMA-262 3rd 正式发布。

Web 产品

互联网产品的特点是:重展现,弱交互。那就是门户盛行的年代,Yahoo、新浪、搜狐和网易当道。

Web 技术

直到20世纪末,还没有真正意义的前端。常见情况是美工切图,后端嵌套模板,也没有所谓的前端架构,前后端的发布机制几乎一样。

  • 展现以 table 布局
  • 表现通过 HTML 标签和少量 CSS 控制
  • 脚本非常少,过程式代码

青铜时代:2001-2006

Web 载体

这一时期爆发了第二次浏览器大战,IE 的垄断地位开始逐渐被打破,Firefox 从中脱引而出。

Web 标准

IE 6 垄断式的胜利直接导致 Web 基础设施至少10年的缓慢发展,这一时期在 Web 标准上并未有重大的突破。

Web 产品

2004年 Firefox 1.0、Gmail 和 Google Sugguest 发布,2005年 Ajax 横空出世和 Google Maps 发布。这些事件的到来显示了低成本的 Web 在跨浏览器上的巨大威力和人机交互的显著改善,导致当时互联网99%以上的内容都是使用 Web 来呈现的。

这一时期互联网产品的特点是:业务变得复杂,交互功能变得丰富。

Web 技术

2001年雅虎有了全世界第一个前端工程师职位。

Web 产品巨大的需求导致 Web 开发的规模化和专业分工,前端工程师开始出现并大量集结于以 Web 业务为主的互联网公司。

这一时期的前端技术特点:

  • 内容、表现和交互的控制通过 HTML、CSS、Javascript 分离
  • 出现了 JavaScript 类库

白银时代:2007-2010

Web 载体

Safari、Chrome 相继推出,浏览器市场百花争鸣。跨浏览器开发能力成为了前端工程师的标配。

Web 标准

这一时期在 Web 标准上仍未有重大的突破。

2007年 iPhone 发布,拉开了移动互联网的序幕。

Web 产品

Web 产品业务复杂度进一步提升、交互性更加丰富,前端职责越来越重。因此前端工程师的需求也越来越越大,前端团队小有规模。

Web 技术

2006年,Jquery 和 YUI 发布,从此拉开了前端开发崭新的时代。

这一时期,各种 UI 库层出不穷,Web 性能80%的瓶颈都在前端,每个公司都在探索适合自己的前端架构。

随着前端团队变大,前端系统复杂性变高,如何让工程师更好地分工协作,如何更合理地组织代码成为时代新的问题。模块化开发由此应运而生,requireJS、OzJS、seaJS 趋势而起……

黄金时代:2011年至今

Web 载体

2010年 iPhone4 发布,彻底拉开了移动互联网的大幕。

Web 标准

2010年,ECMA-262 5rd 正式发布,2011年 CSS 3 Color Module 正式发布,2014年 HTML 5 正式发布。

Web 技术

  1. 框架化:mvc(backbone)
  2. 工程化:Yeoman、百度的 F.I.S
  3. 组件化:mv*(Angular)、React、Web Components

前端开发的两条线:

  • 交互层

  • 数据层

    • 以 NodeJS 为媒介的前后端分离:Connect、Koa……

现在

交互层

移动互联网为信息产业以及普通人的生活都带来了巨大的改变,为世界开启了一个全新的时代。

三七:

随着移动互联网的深入,人们已经处于各种各样碎片化的智能移动设备上,这些设备有触摸屏、相机、麦克风、陀螺仪、加速计等特性,使得人同机器交互的方式发生了巨大的变革。

前端工程师拥抱变革,履行自身职位的使命————还原设计、达成交互。新的时代背景下,部分前端工程师已经具备了客户端和动画的开发能力。

数据层

前端自诞生日起就承担了数据和设计间的桥梁。随着 Javascript 这门语言的发展,NodeJs 在服务端大放异彩,基于 NodeJs 的前后端分离方案开始流行。

三七:

1989年3月12日,Tim Berners-Lee创立了WWW(Word Wide Web),Web的迅猛发展成为Internet上最重要的内容承载方式,以至于很多人会认为Web就是Internet。亿万互联网用户催生无数的Web开发者和巨无霸网站,Web的规模化促使了前后端的分工,于是2001年雅虎有了全世界第一个前端工程师职位,此时前端专注于HTML、CSS和JavaScript,后端专注于业务和数据,而数据(Data)和展现(View)结合部分由于成本较低和技术难度不高而分工模糊,大部分情况下这部分工作依旧是后端工程师在负责。2007年iPhone诞生,互联网全面向移动快速进化,各种系统和硬件配置的Phone和Pad兴起使得用户访问互联网的终端碎片化,导致互联网产品都需要一套数据(Data)多个展现(View),所以Data和View结合的技术难度和成本剧增使得这部分工作必须从后端向前端转移,前端负责客户端和服务端所有的View及View相关的Control,后端负责业务逻辑和数据并以API服务的方式向前输出,这样前后端彻底分离,对于产品开发而言前端只需要控制View和标准化的Data服务,不存在后端了。

前后端分离技术的难点是在服务端的前端,这个领域一直被后端开发语言和思想所统治,对于本来就很稀缺的前端工程师在技能和工作量上提出太高的要求,导致进展不顺利,直到Node.js横空出世。Node.js出现,不仅让前端工程师终于有能力自己为自己打造提高工作效率的工具,让前端工程师发挥程序上的想象力,也让前后端分离有了更好的选择,所以整个业界非常多公司在这方面尝试,有些甚至尝试使用Node.js完全取代后端语言,比如Java。目前还处于风起云涌的初期,所以即使在同一个公司如阿里巴巴内部都很多类似尝试,比如淘宝的Midway、支付宝的iChair和天猫的Wormhole等,主因是难点并不在于Node.js技术本身,而在于和原有业务服务体系对接和运维能力上,所以切入点很多且难以标准化,先多点尝试相互竞争,后续在基于实际方案的基础上进行合并统一是我们目前的思路。

不少前端工程师拥抱变化,使用 NodeJS 介入到了服务器端的领域。

未来

Web 载体

(待补充)

Web 标准

移动互联网时代下的 Web 标准化

Web 技术

回顾前端开发的历程,我们发现,前端工程师的诞生是由于 Web 系统复杂度的不断提升造成技术人员分工协作以便用最优的资源去处理不同领域的问题。

随着 Web 载体和 Web 技术的发展,前端开发已经分出了2个不同的方向,分别是交互工程师和 NodeJS 工程师。交互工程师需要具备跨终端的开发能力,NodeJs 工程师则需要掌握服务器领域的知识。它们两者面向的知识领域是不同的。PC 时代的前端工程师必须完成自我技能的升级或转型,否则就会被时代所淘汰。

Published: February 17 2015