WEB开发行业大事记

90年代初,CERN提出了WEB的概念,即A计算机能够拜访B计算机的数据,和B计算机进行交互。

93年,CGI技术呈现,在它呈现之前,网页都是动态的,CGI最次要的作用,是反对服务端动静生成网页,浏览器不再是单纯的访问者,能够被动向服务端提交数据了。

94年底,W3C组织成立,次要作用是制订WEB标准。同年,网景浏览器公布。

95年,JS语言呈现,微软公布IE浏览器1.0版本,浏览器大战开始。

96年,ECMAScript1.0标准由W3C组织推出。同年,FLASH技术呈现,网页开始转向可交互的,承载富媒体的方向倒退。

97年,CSS标准1.0版本由W3C组织推出。

98年,W3C推出CSS2.0标准。ECMAScript2.0标准推出,同年,网景被AOL(美国在线)收买,浏览器大战以微软的IE胜出为标记暂告一段落。

99年,ECMAScript3.0标准推出。因为IE过后的垄断,导致IE有足够的底气回绝遵循W3C标准,WEB行业的翻新过程也因而短暂停滞了一段时间。同年,微软提出了ActiveX异步加载的技术,这一技术前面演变成了AJAX。

2001年,微软公布IE6,此时IE浏览器占据了80%的市场份额。

2002年,Mozilla社区公布了XMLHttpRequest技术(也就是AJAX),SPA(单页面利用)的开发方式呈现。

2004年,谷歌公布Gmail,推动行业转向应用AJAX制作SPA,同年,火狐浏览器(网景浏览器的精力续作)公布,浏览器大战又开始了。

2005年,谷歌公布Goole Map,持续大量应用AJAX技术,推动行业转型。WEB开发开始转向前后端拆散的模式,前端行业逐步形成。

2006年,JS类库jQuery呈现,次要作用是加强JS的事件处理和DOM操作能力。

2007年,苹果公布初代iPhone,首次实现了在挪动端浏览网页的比拟好的体验,由此开启了挪动互联网的时代。

2008年,W3C组织推出HTML5规范草案,同年,谷歌推出Chrome浏览器,退出浏览器大战。

2009年,ECMAScript5规范推出,同年,Mozilla社区提出了JS在服务端运行的构想,并推出了JS的服务端模块化标准,此标准最后名称是ServerJS,前面改成了CommonJS,同年,NODEJS呈现,它借鉴了局部CommonJS的标准,但并不是齐全遵循CommonJS,NODEJS最大的奉献是把JS语言的利用范畴拓展到了服务端,JS不再是只能在浏览器内跑的脚本语言。所以后续谈到JS,须要辨别到底是浏览器端的JS还是服务端的JS。

2010年,这一年事件比拟多,具体如下:

  • James Burke提出了AMD标准,这个标准次要用于JS在浏览器端如何实现模块化开发,实际上同期还有其余的一些模块化标准,也都是用来解决浏览器端JS开发问题。
  • 实现MVVM理念的前端框架开始呈现,谷歌推出了AngularJS框架,其余的还有微软的Knockout和Backbone,由此前端行业开始转向开发SPA的阶段。
  • JS在服务端的倒退方面,NODEJS引入了NPM性能,适配NODEJS的服务端框架Express呈现。

2011年,前端构建工具broswerify呈现,前端开发流程开始往自动化和预处理方向倒退。

2012年,前端构建工具webpack呈现。

2013年,前端框架REACT呈现并开源,同年,Chrome浏览器市场份额首次超过IE。

2014年,W3C组织推出HTML5规范正式版,同年,国人相熟的前端框架VUE呈现。

2015年,ECMAScript6规范推出,借鉴CommonJS理念制订了ES Module标准。同年,微软发表放弃IE品牌,转向Edge浏览器。

2016年至今,没有革命性地变动,前端行业整体转向挪动互联网,SPA的开发方式成为支流,前端开发仍然采纳预处理+打包公布的形式进行,各个前端框架都推出了本人的CLI构建工具。JS作为服务端方面NODEJS相干生态也在不断完善。

总结《Web研发模式演变》

看了一下玉伯在2014年写的《Web研发模式演变》一文,我总结了一下:

晚期时代,纯后端开发,应用JAVA SERVLET类技术进行开发,因为很久没用JAVA SERVLET了所以这里简略回顾一下,具体如下:

JAVA SERVLET的核心理念是一个SERVLET类对应一个申请URL,之后在SERVELT外部要做所有的事件,能够配合JSP实现模板引擎渲染。

晚期时代的长处是简略,毛病是不能适应大规模开发,一旦业务需要比较复杂,拓展性和可维护性就不好了。

之后进入了MVC时代,是后端MVC,最大提高是在对SERVLET中的各种操作进行了细化和形象,具体如下:

看上去MVC时代和之前没有太大区别,一类申请用一个MVC构造解决,MVC内局部了3个局部,但实际上MVC外部是能够相互调用的,比方申请类型B可能会用到申请类型A对应的MVC内的DAO解决。

MVC时代仍然是重后端的开发方式,所以前后端在代码不拆散,但在分工上须要做拆散,会导致很多问题,比方前端人员在开发时往往须要本地编写离线的HTML的DEMO,之后交给后端人员,被改成理论的JSP,如果后端人员程度无限,就须要前端人员在HTML转JSP的过程中也参加,沟通老本较大。另外控制器也是由后端人员管制的(申明URL,以及URL和模板引擎的对应关系),但实际上页面中的各种URL又是由前端人员编写的(URL的申明),同一个事件让2集体去做,职责不清也会减少开发成本和沟通老本。

之后因为2004~2005年AJAX技术被谷歌大力推广,使得WEB开发进入了本质上的前后端拆散时代,具体如下:

当申请过去的时候,服务端间接返回动态HTML页面,之后在浏览器端应用AJAX向后端MVC服务器发送申请获取数据,MVC服务器也就只返回数据,之后动态页面的JS用数据渲染出动静页面。如果是非SPA,那服务器返回的HTML能够是多个不同的,如果是SPA,则服务器返回的HTML文件只有一份,其余部分都用JS渲染实现,个别会用前端框架解决页面性能组件化复用问题,路由问题,AJAX问题,模板引擎渲染等等问题。

这个模式还有一些变种,比方把JS渲染HTML的局部交给另一个服务器(个别是NODEJS)解决,也就是中途岛模式,两头服务器负责返回动态HTML,发送AJAX到后端服务器(接管动态HTML发送的AJAX),渲染数据,返回HTML字符串给动态HTML页面,动态HTML页面的JS逻辑能够比较简单,次要是把两头服务器响应的HTML片段替换DOM。

前后端拆散是为了应答简单业务产生的,开发难度就之前的形式更为简单,前后端交互的接口标准是一个重点,两方除了初始约定好之外,后续开发中及时放弃沟通也很重要,另外应用JS渲染HTML还会遇到浏览器性能问题,SEO问题等等。

因为NODEJS也是用JS编写的,而JS是一种能够间接在浏览器和服务端都运行的语言,因而到目前还有一种所谓全栈式开发,即用NODEJS解决所有问题,相当于是回归到了晚期时代的开发方式,一种语言包揽所有性能,前端局部应用NODEJS引入前端框架打包开发,后端局部应用NODEJS参考JAVA体系的MVC开发方式做成API服务器,前端局部的一些业务校验逻辑,对应的JS也能够在后端局部应用。当然用NODEJS做全栈还有很多细节须要思考,比方性能问题,平安问题,数据库的对接问题,对不同操作系统上部署的兼容性问题等等。