当前位置: 首页 > Web前端 > HTML5

Web前端发展史(自我成长技术路线图)

时间:2023-04-05 15:14:00 HTML5

什么是前端?前端其实是一个很大的范畴。我这里只针对web开发的前端(以下统称前端)。简单来说,对于浏览器开发来说,浏览器呈现的页面就是前端。其实质是前端代码在浏览器端编译、运行、渲染。前端代码主要由三部分组成:HTML(超文本标记语言)、CSS(层叠样式表)、JavaScript。如图:前端的发展历程前端也经历了比较长的发展历程。大致过程可以分为以下几个阶段:上古时代:这个节点不得不说。世界上第一个浏览器NCSAMosaic是Netscape公司(Netscape)于1994年开发的,其初衷是为了方便科研人员查阅资料和文件(此时的文件大多是图片形式)。那个时代的每一次交互,按钮点击,表单提交,都需要等待很长时间浏览器才有响应,然后重新下载一个新的页面给你看,大概是这样的:PHP(HypertextPreprocessor)脚本语言是同年开发后,开启了模板嵌入数据的MVC模式。同期还有几种类似的方法:PHP直接将数据嵌入到HTML中。ASPXforASP,在HTML中嵌入C#代码。Java的JSP将数据直接嵌入到网页中。这一时期,浏览器开发者多为后台开发者,前后端开发多为一体化。一般的开发流程是:后端接收浏览器的请求--->发送静态页面--->发送给浏览器。就算有专门的前端开发,也只是用HTML写页面模板,用CSS给页面安排好看的布局(要不是我堂堂的程序员不喜欢这份工作,你们这些剪图的要讨饭了~)。铁器时代(SmallFrontEndEra)1995,这是个好年头,这家麻烦不断的Netscape公司,请来了一个叫BrandonEich的大佬,希望能开发出类似Java的脚本语言,用来提高浏览器的显示效果和增强动态交互能力。结果老大喝着啤酒抽着烟,十天就写出了这个脚本语言。它很强大,但是语法一点也不像Java。这样前端的原型就逐渐形成了:HTML是骨架,CSS是外观,JavaScript是交互。同时,微软等一些公司也为自己的浏览器开发了自己的脚本语言。有很多种浏览器。虽然有一个比较统一的ECMA标准,但浏览器在标准出现之前就已经在市场上流行起来,成为事实上的标准。因此,现在前端工程师在做一些古老的政府项目时,不得不处理浏览器兼容性问题(万恶的IE系列)。不管怎样,前端开发也算是会写一些逻辑代码,不再是只能画页面的低端开发了。随着1998年AJax的出现,前端开发从web1.0走向web2.0,前端从单纯的静态展示内容发展到动态网页、丰富交互、前端数据处理。在此期间,两个著名的富有交互性和动态性的浏览器产品是:Gmail(2004)和谷歌地图(2005)。由于对动态交互和数据交互的需求越来越大,也衍生出了jQuery(2006)等优秀的浏览器。一个跨浏览器的js工具库,主要用于DOM操作和数据交互。一些老项目,甚至近几年开发的大型项目还在使用jQuery,以至于jQuery库还在不断更新,虽然其体量远不如React、Vue等优秀的前端库。信息时代(大前端时代)从2003年开始,前端发展经历了一个比较平稳的时期。各大浏览器厂商除了一步步更新自己的浏览器产品外,并没有做其他任何事情。但是我们的程序员是耐不住寂寞的。工业化促进了信息化的快速到来。浏览器呈现的数据量越来越大,网页动态交互的需求越来越大。越来越明显(频繁的交互操作导致页面卡顿),仅从代码层面提升页面性能越来越难。于是优秀的大佬们做了一件惊天动地的事情:2008年,谷歌V8引擎发布,结束了微软IE时代。2009年,AngularJS诞生,Node诞生。2011年ReactJS诞生。2014年,VueJS诞生了。其中,V8和node的出现使得前端开发者可以使用熟悉的语法糖来编写后端系统,也为前端提供了使用同一种语言实现全栈开发的机会(JavaScript不是不再是一种只能为页面交互编写和编写的语言(脚本语言)。React、Angular、Vue等MVVM前端框架的出现,让前端实现了项目真正的应用(SPA单页面应用),不再依赖后台开发者处理页面路由控制器,实现页面跳转的自我管理。同时也促进了前后端的彻底分离(前端项目独立部署,不再依赖类似的模板文件目录)。这里解释一下MVVM模式:Model:Provide/savedataView:ViewView-Model:SimplifiedController,唯一的作用就是提供给View处理后的数据,没有其他逻辑至于为什么MVVM框架可以提高前端渲染性能,这里简单总结一下原理,因为大量的DOM操作是性能瓶颈的罪魁祸首,所以通过一定的分析比较算法,实现相同效果下DOM开销最小是可行的。React、Vue等框架大都是通过这种思路实现的。具体的实现,有兴趣的可以去看源码,这里就不展开了。前端的分离也导致了前端分工的变化:后端更注重数据服务,前端完全掌控自己的行为,可玩性更高。当然,相应的学习成本也在增加。node的出现也让前后端一起开发成为可能。很多大公司在2015年前后就开始尝试,使用node作为中间数据传输层,让后端更专注于数据服务和治理。全能前端时代从2009年开始,大屏智能手机开始陆续出现。后来,4G移动网络开始普及。这使得前端开始从基于PC浏览器的单一Web应用覆盖手机和平板(HTML、CSS、JavaScript也相继推出了自己的新标准)。前端对跨设备浏览的需求越来越大。前端不再只是PCweb开发,手机配置,和APP混合开发已经成为常态。就连Facebook推出了React-Native,国内的微信和支付宝也推出了小程序,试图将web和native开发结合起来。为什么会出现这样的情况?网速越来越快,硬件性能越来越好,js在各种终端上的运行能力和原生开发(IOS,Android)的差距越来越小。让我们来捣乱小(懒惰)的程序员想知道他们是否可以编写一组代码并运行它。是的,这个可以,React-Native,小程序,甚至后来出现的Electron,都让用JavaScript(VSCode)开发桌面应用成为可能。Google也在这两年推出了Flutter开发语言,可以实现一套代码,运行在多个地方(web,app)。前端真的不再是只能切图开发静态页面的前端了。后端可以做,爬虫可以做(node),app可以写(Weex,RN,Flutter),桌面应用可以开发(Electron)。算法和语言的严谨性还是有点欠缺,但是TypeScript的出现以及后续的ECMA标准的进一步完善,会让前端更加通用,细分的工作领域可能会更多。最后,告诉大家“任何可以用JavaScript编写的应用程序,最终都会用JavaScript编写”。这就是生态系统的概念(最早见于《黑客与画家》的谷歌教父对浏览器生态的思考),包括浏览器,包括微信和支付宝,早就走上了这条“不归路”。