今天鹿哥主要通过以故事的形式,把一些老前辈经历的这十几年前后端风雨变化的发展史分享给大家,算是一篇科普。本文涉及不到太过复杂的东西,大多数都是我们没有经历过的技术年代,包括我自己,通过去写这篇文章,了解的一些技术发展时间线,从中也包括一些老前辈的一些个人经历,我都混合到文章里边了,觉得受益匪浅。

你可能只关注技术本身,而不知道技术的发展历程,你看完之后,肯定会有某一点让你受益,建议一定要认真看完!!

1、前端的崛起

web 最初始的原型是在 1989 年,欧洲的物理实验室 Tim Berners 提出的,它是如何提出web的原型呢?

因为之前那些搞研究的大牛,每天都会在计算机上访问大量的资料文献,但是资料太多,咋办呢?后来他就建议在文档中链接上其他文档,这样查找、整理起来方便很多。到了这个时候,web 原型基本的概念就有了。

到了 1994 年,万维网就正式宣布(W3C)成立了,对,也就是我们经常访问的 W3C 网站。那么一个叫网景公司的也陆续推出了第一版 Navigator 浏览器,HTML 和 CSS 也陆陆续续发布。其实到了这个时候,就成为了前端发展的历史新的起点,也是一个从无到有的过程。

2、JavaScript 的诞生

还记得前几天分享的 git 的作者 Linus 大牛吗?只用了10 天时间。网景工程师 Brendan Eich 也是花了十天的时间设计了 JavaScript 语言,卧槽,这是神一样的存在啊。人家设计语言只用了几天,我们学习却用好几年,扎心了,老铁。

那个时候两个厂商的浏览器 Navigator 和 Internet Explorer 浏览器开始一比高下,敌军还是十秒到达战场。到 2002年,敌方水晶被击毁,IE 完胜,占据全世界的 96% 的市场份额。

虽然 IE 攻掉敌方水晶,但是很多厂商都有自己浏览器,为了让各大浏览器统一编程规范,1997 年 6 月 ECMA 以 JavaScript 语言为基础指定了 ECMAScript 标准规范 ECMA-262 ,从此浏览器厂商都是按照这个对方来开发自己的浏览器产品。

版本经历了以下几个阶段:

  • 1999 年12 月 ES3(十年);

  • 2007 年的 ES4 夭折(改动太大);

  • 2011 年 6 月 ES5 发布;

  • 2015 年 6 月ES6 发布;

  • 2016 年 6 月对 2015 版本增强的 2016 版本发布;

  • 此后相继有 ES2017、ES2018...

同时 HTML 和 CSS 也跟着进行版本迭代,直到现在的第五代版本的 HTML5 和第三代版本的 CSS3。到了 2011 年,整个前端才稳固下来,这之前发展真的是整个互联网在动荡,从此以后,前端和后台迎来了新的较量。

3、“轻前端,重后端”时代

不满大家,我终于想明白了一件事,刚上大一的时候,学校给我讲的就是 JSP 技术,至于为什么讲 JSP,因为我们老师就是再那个年代过来的,也就是偏向于服务器端渲染。由于时代技术发展的太快,加上老师脱离技术的更新迭代学习,只能出来教这些老一代的技术。

至于为什么现在学校几乎没有教你整个前端技术栈的,我想,你应该明白了。

什么是服务器渲染时代,画个图给大家一看就明白了。

当浏览器发出请求,到服务端接收到请求的时候,不会单单把数据发送给浏览器,而是服务器端渲染,所谓的服务器端渲染就是版页面和数据结合在一起,生成结构样式和数据的页面返回给浏览器,浏览器对其解析展现出内容给用户。

你会发现,这时候前端干的活很少,基本都是后台将数据绑定到页面标签内,所以那个年代叫做“轻前端,重后端”的年代。

而且那个时候不叫前端,而是叫网页制作。假如你在那个年代,你一个大老爷们去公司面试网页设计,面试官都想一个大老爷们做网页太丢了,没错,那时候网页设计没啥技术含量,而且后台才是有含金量的技术点。

所谓的网页设计也就是写写页面和样式罢了,最适合妹子干这事。

那个时候后台都干啥,最起码会写数据的代码,操作数据库,操作服务器,再一个就是会数据结构与算法以及服务器分布式(缓存和并发)。

那个时候公司遇到的问题基本都是后台的问题,比如服务器压力过大。而且前端面临的问题就是数据更新问题,每更新一个数据就要刷新整个页面。

对于服务器压力过大问题,当时的解决方案就是多加服务器,但是那个年代公司资金不足,光买服务器需要不少钱,所以服务器并发和访问量放到那时候是个难题。

不知道大家记不记得近几年春晚的时候,有一个抢红包的活动。听说阿里为了备战这几个小时流量和并发量,基本把国内 80% 服务商的服务器购买了,就是为了能够抗住春晚抢红包那几个小时。

4、客户端渲染时代

紧接着又迎来了客户端渲染时代,ajax 这时候出场了,还记得服务端渲染时代的弊端吗?后台重心开始分担给前端,而且整个通信过程变成了下边的样子。

客户端渲染时代,前台请求的页面和数据以及资源都是分开请求的,并不像服务器端渲染那样页面和数据一并请求回来,因为这样能够实现局部页面的刷新,而不会像以前那样更新一个数据,就要把整个页面刷新一下。可以说,页面的交互有了异步。

这时候,前后台所干的活也不一样了,列个表,对比一下。

从上图中,发现这个年代前端技术人员要求会的越来越多,而不会只是会写个页面罢了。

而且你会还发现,由于涉及到了网络请求,所以要求前后台开发人员要掌握一些网络原理的知识,比如 HTTP/TCP。

说到客户端渲染时代,不得不说出现的问题,前端人才处于急缺,而且当时只会后台不是那么吃香,吃香的人往往是后台知道点前端的知识,这部分人是最吃香的。

在这个时代,也是前后端分离的雏形,异步渲染开始大显神通。

5、ISO 和安卓主力时代

到了第三次的发展,就到了 APP 主力时代了,很多同学肯定听说过或者经历过安卓火的那几年,IOS 和安卓开发人员工资最起码上万起步,但是火了几年之后,就慢慢的即将被淘汰,你说为啥?

没错,主力逐渐从安卓转向了前端,我明明用前端一套框架同时能开发出PC、安卓、IOS、小程序等多平台,我还雇佣安卓和IOS开发人员干嘛,而且工资这么高。所以后来,学安卓和 IOS 的慢慢的变少了,基本都往前端去发展。

那么安卓和 IOS 的主力是如何逐渐转向前端的呢?这个技术发展周期转变的时间挺短的,为了理清原因或者一些技术缺陷,分开来讲。

1) 原生 APP

在安卓和 IOS 刚刚崛起的时候,最大的优势就是这些原生的 APP 可以运行在操作系统中,性能是非常好的,而且功能强大,比如可以直接调用手机中的软件和硬件。

但是随之弊端逐渐暴露出来,要开发一个 APP,但是同时要分别做两套,一套是安卓,另一套是IOS,所谓的开发一套原生 APP 并不能进行跨平台性,开发两套成本非常的大。

由于跨平台性差,也带了不能同步的问题,不知道大家还记不记得当年的 QQ 厘米秀,当时 ISO 先上线的,安卓由于线上出现问题,导致晚一天上线。其中有一个特别好玩的梗,就是 ISO 的用户给安卓用户发了一个厘米秀,安卓用户回复了一句话,用山东话来说,你发哩个啥?

2) H5(WebApp)

基于以上缺陷,H5 WebApp 迅速崛起,因为 H5 运行在浏览器中的,做一套,就可以在 IOS 和安卓同时运行,而且可以上线的 APP 可以实时的进行快速更新,安卓和 IOS 这一点相比很弱的。

每个新生事物有优点就有缺点,H5 在性能上不如原生的 APP 强大,毕竟不像是原生 APP 直接运行在操作系统中。而且对调用手机的软件和硬件很不友好,比如用 H5 调用摄像头。由于浏览器是在操作系统中的,所以 H5 调用首先问一下浏览器你支不支持,如果浏览器不支持,那你就调用不了。前期大部分的浏览器其实都不支持的。

3)混合 APP

后来又迎来的混合 APP 开发,比如 Hybrid,所谓的混合 APP 就是,我创建一个壳子,如下图,通过这个壳子让 H5 可以轻松实现调用原生手机里边的一些东西,可以说混合 APP 的那个壳子相当于一个 H5 和原生 APP 的沟通的桥梁。

到了后来安卓和 IOS 开发变弱,公司会找一个类似外包的开发人员,开发一个这样的壳子,而不是去招大量的员工,因为这样成本会很低。

随之又诞生了 React-Native 和 Flutte 以及 uni-app。了解过 uni-app 的童鞋知道,我开发一个 APP,就可以一键生成安卓、ISO、小程序等多端平台。

4) Node.js

慢慢的基于 JavaScript 的 Node.js 服务器端崛起了。我们上边回顾了前后端技术这十几年的发展,技术是逐渐从后台分配给前端,从而使得前后端权衡。Node.js 即将迎来一个新的高潮和爆发点。

Node 服务器的并发量和吞吐量比传统的 Java 语言 PHP 语言都要高,而且目前淘宝京东已经把自己的业务逻辑层全部改成 Node.js,因为淘宝等购物人流量很多,要支持大量的并发量和吞吐量。

全栈工程师这一职位兴起,比如你会前端开发同时又可以会 Node.js 开发服务器端,那么你就可以作为一个全栈开发工程师。

据了解,大型企业在做一些中小型型项目时,如果后台数据量并没有这么复杂,就会采用 Node.js 去开发后台。


6、大前端时代

前端和后台经历了这几十年风里雨里的发展,终于迎来了属于前端的时代,也就是我们所说的大前端时代已经到来。很多人问过鹿哥,说前端还缺人吗?你看了这篇文章想必你知道了答案,不仅缺人,而且更缺全能型人才。

最后简单分析一下目前互联网发展的状况,个人思考,仅供参考~

1、小程序在企业产品中的地位逐渐上升,你品,你再细品!

2、大前端时代迎来,还会有 ISO 和安卓的空间吗?

3、AR/VR 最终转为 B 端,比如JS、webGL、canvas、three.js3D虚拟交互的主要实现技术。

4、国内的大型游戏基本定型,H5 小游戏的热度会逐渐提高,无论是小程序还是其他平台,这些都是基于 JS 引擎。

5、Node.JS 还会迎来下一个高潮。

最后

看完前前后后这几十年的变化,给你最大的感受和思考是什么?前端的发展从“轻前端”到逐渐“重前端”,直至大前端时代的来临。

纵观十几年互联网技术发展,java 一直处于不火不热稳定状态,安卓和 IOS 从火热到逐渐被淘汰,Python 处在水深火热之中,每次都被莫名的炒作起来,而前端的技术地位变的越来越重要。

但是目前为止,我发现各个大学计算机专业基本都会涉及到 java 后台的教学,但是并没有一所学校能够教学整个前端技术栈(除了专业的职业学校)。

前端发展太快,大学老师本身前端技术栈掌握不多,也就教你的 HTML 和 CSS,所以只依靠学校的教学,对于前端职位来说毕业后找工作很难,下篇会整理下大前端时代应该掌握哪些技术栈。

鹿哥,你说 JS 啥都能干了,还要 java 吗?我个人是没有任何语言偏见的,也不是 JS 啥都能干,只不过是 JS 在这个年代属于全能型选手。

由于 java 在这个市场中一直处于既不紧缺,又不饱满,需要相对稳定的状态。但是不得不在未来几年有危机感,而且 java 最适合于大数据,也就是数据的挖掘,需要掌握的技能是数据结构与算法、服务器分布式缓存并发,这可能就是以后 java 开发人员转型的一个方向,不再每天 CURD。

本篇设计内容过多,会把一些老前辈的学习经验和大前端时代来临应该掌握哪些技术栈另写一篇文章,最后感谢大家阅读!给你一个在看的权利。

©著作权归作者所有:来自51CTO博客作者mb5fe1601ede528的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 数据分析和数据科学的四个时代
  2. 50年高考作文题,记录时代变迁
  3. 聊聊前端和后台分离那点"破"事!
  4. 详解 PHP 异步后台处理
  5. php-resque :基于Redis的后台任务系统
  6. 两道JVM面试题,竟让我回忆起了中学时代!
  7. 使用后台进程和 Shutdown Hook 友好地关闭 Tomcat
  8. jquery向Django后台发送数组
  9. Jquery 传json格式数据到后台,后台反序列化得到一个集合list

随机推荐

  1. ASP.NET Core Razor页面路由的详细介绍
  2. C#多线程之Semaphore的使用详解
  3. 详解有关asp.net mvc 动态编译生成Contro
  4. C#中Observer观察者模式如何解决牛顿童鞋
  5. C#如何实现JSON与对象之间互相转换功能示
  6. 有关ASP.NET Core 中的多语言支持的详细
  7. C#如何实现loading提示控件简单的实例
  8. C#中Observer观察者模式解决牛顿童鞋成绩
  9. 关于ASP.NET视频教程的资源分享
  10. C#中enum与string的相互转换的示例