五月,Google 推出了Flutter 1.5,引发了技术圈里对“全平台”技术的热议和思考,Flutter的召唤|趋势背后的思考。

文末留言,大部分同学在“学和不学”间争论不休,难道什么技术火,我们就要学什么吗?

没有人能给出你绝对的答案,“学与不学”本身来讲就是个伪命题,大部分都在于你自己的态度和实际业务环境的需求来决策的。

但在技术圈里,也不乏敢于“尝鲜”技术人,这群人往往能够掌握多种技能,并能很快能将这些新技术运用到自己产品和业务当中去,实现商业化。我们将这群人称之为“全栈工程师”。

本篇文章,我们暂且不再探讨要不要全栈,而是想通过研究Web技术的演进路径,来窥探未来的开发者的职业路径是怎样的? 由此带给大家更多的启示和参考。

Web技术的演变之路

静态页面时代(1990-1991)

HTML技术,主要是文本和图片(包括gif动态图片)。

特点:简单,只能做信息的展示,无法同用户进行交互。

1990年,万维网之父蒂姆·伯纳斯-李(Tim Berners-Lee)在NeXT电脑上发明了第一个Web浏览器。

1991年8月6日,Tim在alt.hypertext新闻组贴出了一份关于World Wide Web的简单摘要,这标志了Web页面在Internet上的首次登场。

最早的Web主要被一帮科学家们用来共享和传递信息,全世界的Web服务器也就几十台。由于仅是用来传递信息,从可视化方式或从传递数量上看,仅比电报强一点点。

当时还没有JavaScript,用的是纯静态的页面。

enter image description here

(早期的静态网页)

最早的动态网站(1993)

主要采用CGI/Perl脚本技术,能够实现内容动态,具备了交互性,服务器能够访问文件系统或数据库。

缺点:伸缩性差(为每个请求分配一个新的进程)、安全性差(直接使用系统环境变量和文件系统)、脚本组织混乱并且缺少一种结构化的构造动态应用程序的方式。

enter image description here

1994年,Rasmus Lerdorf创建了PHP。

事实上,这个时候的 PHP 只是用 Perl 语言编写的一系列 CGI 脚本,用于跟踪他在线简历的访问情况,统计他自己网站的访问者。在早期, PHP 并不是一门语言,只是一些工具,提供基本的变量,并使用嵌入式HTML句法自动处理表单变量。

(PHP发展史:https://wenku.baidu.com/view/024d9205a1c7aa00b52acbf8.html)

JavaScript诞生于1995年。起初它的主要目的是处理以前由服务器端负责的一些表单验证。

如果能在客户端完成一些基本的验证,在当时来讲绝对是令人兴奋的,于是,就职于网景的布兰登·艾奇开始着手计划将LiveScript同时在浏览器和服务器中使用。此时,布兰登·艾奇为了搭上媒体热炒Java的顺风车,临时把LiveScript改名为JavaScript,所以从本质上来说JavaScript和Java没什么关系。

1996年,ASP 1.0诞生,简化了Web开发。

由于Web程序开发十分复杂,以至于要制作一个简单的动态页面也需要编写大量的C代码才能完成。

于是,Microsoft公司于1996年推出一种Web应用开发技术ASP,用于取代对Web服务器进行可编程扩展的CGI标准。

原来要写C语言,太难了,有了ASP只需要写写VBScript脚本或者JavaScript脚本即可,而且还有内部组件实现了cookie等高级功能,ADO(ActiveX Data Object)简化了数据库的相关操作。

1998年,JSP技术诞生,建立的一种动态技术标准。

JSP也称为动态页面,其实就是,在HTML页面里,嵌入java代码,通过这样,达到页面动态改变的功能。JSP在处理的时候,先通过web server的JSP引擎,转换为servlet,执行servlet,然后将结果合成一个HTML页面,返回给客户端。

浏览器端的魔术:AJAX (2005-2007)

局部更新,响应更快,真正用Web应用取代了Web页面。

enter image description here

Ajax 技术诞生,改变了一切,同时也促成了 Web 2.0 的诞生。

  • 2004年:Gmail

  • 2005年:Google 地图

前端不再是后端的模板,可以独立得到各种数据。

谷歌火了,Ajax也成为火爆的前端技术,我们在使用gmail,google map等产品时,有了另一种体验,点击链接或按钮后,即便网络不算流畅,页面不再全白重新刷新,而是内容渐渐的出现。其原理就是利用Js脚本到后台服务器获取数据,在浏览器前端对数据进行解析和渲染,在这个过程中,大多数页面并不需要进行改变,只是更新页面中一部分即可。谷歌公司大力支持Firefox使其重生,并和苹果一起发展webkit项目,各自发展了chrome和safari浏览器,伴随者页面渲染能力大力提升同时,Js脚本的解析能力也突飞猛进。

Ruby on Rails:通过约定的规范方式开发Web应用(2007)

第一次将广泛应用于桌面应用的开发模式——MVC,搬到了Web应用开发领域。

在随后的几年时间里,AJAX成为了焦点,但在服务器端仍然使用着旧有的技术。

大概在2007年,37signals公司公开其成员–Ruby on Rails。

那个基于Ruby on Rails 5分钟构建博客的演示完全征服了全世界的开发者。

Rails的不同之处在于使用规定的方式去设计你的web应用程序,运用一种已经广泛在桌面应用开发,但未被搬到web应用上的开发模式。这种模式就叫做模式(数据)-视图(模板)-控制器(业务逻辑)。Rails强调,“这事就该这么做”,并且通过许多插件让构建web应用再一次更加健全。

客户端开发技术的崛起(2007-2016)

在2007到2010年期间,涌现了3种开发潮流:

第一,智能手机和移动应用潮流。通常情况下,许多应用程序同时有web和移动应用两种版本。尽管如此,服务端仍然返回的是HTML页面,而不是其它移动应用可以识别。因此,你需要返回的是结构化数据来取代HTML。

第二,开发潮流是jQuery。这是一个非常流行的JavaScript库,能够很容易构建动态、美妙的web应用,甚至是AJAX!

第三,潮流是Node.JS的发布。这是第一次能让你用JavaScript开发高性能的服务端程序,进而可能结束“客户端开发者”要知道HTML/JavaScript,“服务端开发者”要知道.NET/C#/Ruby这样的噩梦。

客户端开发技术的规范化—从后端到前端(2009-至今)

客户端框架如Backbone、Ember、Derby、Meteor、AngularJS等等,简化了客户端的开发,并且也逐步形成了MVC的模式。这种模式下,前后端分工变得愈加清晰。

伴随着信息时代、大数据时代的到来,jQuery 在大量的数据操作中的弊端体现出来了,它在对 DOM 进行大量的操作中,会导致页面的加载缓慢等问题。

  • 2009 年AngularJS 诞生、Node诞生。
  • 2011 年React 诞生。
  • 2014 年Vue.js 诞生。

Node算是前端的第二次飞跃,它使 JS 在服务端语言中也有了一席之地。

如今,后端负责数据,前端负责其余工作越发明显化。它们之间的通讯,只需要后端暴露 RESTful 接口,前端通过 Ajax,以 HTTP 协议与后端通信即可:

enter image description here

前端从 2014 年到 2017 年是混战期,得益于 Node.js 的辅助加成,外加各种前端优秀的创意和实践,使得React/Vue/Angular 三足鼎立,加快了标准统一的步伐,无论 React 发布 v16,增加 Fiber 和Hooks,还是 Vue 3.0 发布,其实最终都是朝着W3C WebComponents 标准走。

小程序是最近两年比较火的技术,与PWA比较类似,应用轻量化将逐渐步入稳定期和成熟期。

趋势背后的思考

由于前端的特殊性,开发者总是要与时俱进熟悉了解最新的前沿技术,如果基础好的话,更容易、更快和更稳的去利用和掌握知识点,甚至能直接改装热门技术框架,直接为己用。未来的话,前端工作也会随着技术的发展而继续分化和融合,全栈也可能是你未来的一个职业走向。

拓展阅读:enter link description here

enter image description here