1.1.1 从传统Web到现代Web开发
1991年Tim Berners Lee公开介绍了他的World Wide Web(简称Web)项目,这是Web第一次被介绍给全世界,在这一年,越来越多的Web服务器联入网络,越来越多的Web网站出现,标志着Web时代的到来。
早期Web开发等同于内容开发,没有前后端开发的概念,页面由JSP、PHP等工程师在服务器端生成,浏览器负责展现。早期Web除了内容,它还支持通过超链接和表单的浏览器原生行为,实现一种以页面为最小粒度的交互模式,基于这种交互模式,出现了最早的Web应用。之后以页面级交互的需求越来越多,人们开始不能接受生成页面和处理页面的代码混写在一起,进而发展了MVC架构的服务器端框架,生成HTML的代码变成视图层。随着互联网的发展,对交互有了更多的需求,AJAX的出现极大地提高了Web的用户体验,在HTML页面上提供丰富的交互能力。随之而来的是jQuery的快速发展,jQuery对各种浏览器做好了兼容,简化了DOM操作,使开发效率大幅提升。
移动互联网的爆发带来了Web技术的重大变革。客户端需求复杂化,大量应用流行,对用户体验的期望提高,客户端渲染成为刚需,客户端程序不得不具备完整的生命周期、分层架构和技术栈,这个阶段催生了Angular 1等一系列优秀的框架以及AMD、UMD与RequireJS等模块标准与加载工具,前端工程师也成为了专门的开发领域,拥有独立于后端的技术体系与架构模式。
近几年间,随着Web应用复杂度的提升以及用户对于页面交互友好与性能优化的需求,急需更加优秀灵活的开发框架来协助我们更好的完成前端开发。这个阶段涌现出了很多关注点相对集中、设计理念更为优秀的框架,譬如React、Vue.js、Angular 2等组件框架允许我们以声明式编程来替代以DOM操作为核心的命令式编程,加快了组件的开发速度,并且增强了组件的可复用性与可组合性。由于前端工程师要维护的代码变得极为庞大和复杂,代码维护、打包、发布等流程也变得极为繁琐,在构建工具上,涌现了以Grunt、Gulp为代表的任务管理和以Webpack为代表的项目打包工具,帮助开发者更好的搭建前端构建流程,自动化地进行预处理、异步加载等操作。
现代Web开发的特点:
- 以客户端为主体:服务器端部分很薄,大量成熟业务逻辑、数据能力、运维能力和基础设置被API化、云服务化(由第三方服务商和团队内的专业开发者提供)
- 不只有客户端:服务端渲染+API Gateway+部分面向应用的微服务
- 不只有浏览器:超级app平台、各种基于Web Runtime/JS Runtime的Hybrid技术