静态网页阶段
最初面向大众的互联网应用一开始应该是从电子邮件开始的,浏览器承载的网站慢慢进入大众的视野,已经是1990年的事情了。在1990年的12月25日,Tim Berners-Lee在他的NeXT电脑上部署了第一套“主机-网站-浏览器”构成的Web系统,这可以说是BS 软件的开端。到1994年11月,鼎鼎大名的Navigator浏览器发布发布了,到年底W3C在Berners-Lee的主持下成立,标志着万维网进入了标准化发展的阶段。 这个阶段的网页,只是静态网页,内容不会主动更新。
动态网页技术阶段
怎么让网页动起来呢? 1995年,NetScape公司的工程师Brendan Eich设计了javascript脚本语言 ,并集成到navigator2.0 浏览器中。 JS的出现,让网页开始能做一些简单的动态效果,网页开始有了交互感,一些广告,跑马灯等页面特效可以在浏览器中实现了。
但是会动的网页不等于动态网页, 真正的动态网页是从动态网页是从ASP,PHP,JSP 等服务端页面脚本技术的出现开始普及的。一大批的服务端脚本技术出现快速的推动了互联网服务的发展,浏览器页面的交互越来越复杂,承载的业务越来越多,人们开始反思如何才能更好的对动态网页进行维护。
MVC 时代到来
严格的来说,因为动态网页脚本本身大部分的业务还是直接写在页面脚本中的,比如在JSP,ASP,PHP页面中都曾经有过一段直接在页面上访问数据库的代码,在初期还上尚可接受,但是禁不住业务的快速叠加,页面脚本代码很快就变得难以维护。
人们探索的答案就是:进行分层,让之前页面脚本中的各种职责的代码分别独立出来,JSP等页面模板只负责展示页面数据(view),具体的业务逻辑后置,作为一个个的控制器(controller),而承载业务数据的代码结构就作为模型(Model),这也就是MVC 的由来。 在2010年以前相当长的一段时间内,MVC 基本是WEB 开发的标准技术。虽然前端领域也早在2004年就出现了ajax的动态异步请求技术,但是一直以来都只是作为页面局部优化,改善用户体验技术的一部分,并没有对MVC 的开发方式产生颠覆式的影响。
HTML5 出现,Node JS 横空出世
HTML5的技术标准草案是在2008年1月22日 ,由W3C正式发布的。在HTML5 技术标准草案发布后,各个浏览器厂商都在对HTML5的支持上展开了如火如荼的竞争,逐渐形成了现在fireFox ,Chrome ,以及Safari 三足鼎立的局面。2014年10月28日,W3C正式发布HTML5.0推荐标准。
Chrome 浏览器是基于V8 javaScript引擎研发的。在V8 引擎的基础上,2009年,Ryan Dahl开发了基于事件循环的异步I/O框架-Node.js。Node js 突破了人们对 javaScript 只能运行在浏览器端的认知,原来javaScript 也可以用来做服务端程序。 Node.js也催生了node.webkit等项目,拓展了javascript开发跨平台的桌面软件的能力。
现如今的HTML5已经深入到了PC 网站以及各个移动端的网站以及App中,成为了我们交互的主流,各种前端框架层出不穷,前端工程师也在2014年成为一个独立的岗位。
前端的再进化: MVVM
H5 的发展快速推动了前端技术栈的发展,到2015年,人们能看到的网页效果和10年前,有了翻天覆地的变化。 尤其是移动互联网时代的到来,让人们看到H5的巨大潜力,前端页面的的重要性与日俱增,随之而来的还有前端代码复杂度的再次提高。
为了解决日渐复杂的前端工程,人们再次开始在前端的技术栈中开始分层,MVVM 出现了。MVVM 即:Model-ViewModel-View-Controller,在mvc 中间,又加入了一层: ViewModel ,这似乎又验证了那句话: 计算机科学中的所有问题都可以通过引入一个间接层得到解决。ViewModel 解决的了前端代码中大量调用相同的 DOM API,处理繁琐 ,操作冗余,使得代码难以维护的问题,有了ViewModel ,双向数据绑定在框架层得到实现, 前端再也不用更新Model 还要再手动更新view了。这也是如今,前端技术领域Vue,react 等技术栈层出不穷的一个原因。
前后端分离
前端技术栈的发展逐渐让前端开始朝着工程化的方向发展,前端再也不是以前MVC 时代,html 代码和后端的代码在一个工程中共存了。前端工程师,后端工程师的分工也越来越明确,前端写页面,后端写接口逐渐成为了现在的主流开发方式(也许国内是这样的,国外不大清楚)。