经过近30年的发展,web已经从web1.0时期进入web3.0的探索阶段。在web时代,web技术的每一次创新都在极大地影响着人们的生产和生活。
早期的静态网页

这一时期处于web1.0阶段,主要事件伴随着浏览器的诞生、网站的出现和W3C的成立。这个阶段是“主机-网站-浏览器”BS架构网站的开始,也是前端工程师早期工作的雏形。网站呈现为纯静态的只读网页。
动态网页的兴起
随着javascript脚本语言的出现和浏览器的标准化发展,纯静态的网页形式已经很难满足网站的实际需求。于是,支持网站动态交互的技术开始出现,比如以PHP、JSP、ASP为代表的后端动态页面技术的衍生,这也属于动态页面发展的开始。服务器动态的把不同的页面推送到浏览器,加上一些javascript脚本设计的动态特效,真的让一个网站动起来了。同样在这个时期,为了更好的管理后端逻辑,后端开始衍生MVC框架,这也是目前后端MVC框架诞生的开始。
Web Ajax的流行
虽然动态页面的显示效果有了很大的提升,但是用户体验却成了另一个问题。每个数据交互都需要刷新浏览器,每个请求都必须等待服务器的响应才能继续操作。为了增强用户的体现性,衍生出Ajax技术实现异步HTTP请求,允许页面不刷新发起HTTP请求,用户可以继续浏览或操作网页,而不是等待请求的响应。
与此同时,Ajax也正式开始了web进入2.0的开发期。
Web Javascript的发展
随着ajax的出现,javascript同时得到了广泛的应用,需求必然推动技术向前发展。这时候最大的问题就是浏览器兼容性的处理。于是,类似jQuery的兼容性框架开始出现。与此同时,W3C为了统一标准,衍生并开始应用一套新的标准规范,即HTML5和ECMAscript5的标准化应用,以及chrome浏览器V8引擎的出现,使得web真正开始发展。web这个前端工程师的标准化职位出现了,真正从早期的图刀变成了web开发的前端工程师。
Web节点的爆发
与服务器语言相比,javascript语言最大的缺点在于主机的访问。由于客户端安全性的限制,也导致了javascript语言发展的局限性。于是,服务器端javascript即nodejs诞生了,它使得前端开发者可以用javascript开发服务器端程序,深受前端开发者的喜爱。于是,由NPM包管理的nodeJS生态系统建立起来,成为当前前端项目中不可或缺的模块生态系统。
此外,Node.js还诞生了node.webkit、Electron、nw.js等项目,使得javascript能够跨平台开发桌面软件。
MVVM,WEB前端的MVC架构和单页面应用的兴起
随着前端业务量和复杂度的大幅增加,类似后端业务架构的前端MV*框架成为近年来web前端的主流趋势,并基本应用于各个领域的web产品中。自2010年中坚力量出现以来,Knockout、Anjular、Ember、Meteor、VUE、React相继出现,尤其是Vue、React、Angular,堪称当前前端行业的三驾马车。
随着这些框架的应用,网站从网站演变为Web App,网站应用的SPA时代已经开始。
网络移动终端的出现
随着智能手机的普及,web已经进入移动终端领域。短短几年时间,社会已经基本从web PC转向移动终端的适配,web进入了一个新的发展时期,即多终端融合的趋势。所以像jQuery Mobile,Sencha Touch,framework7等混合应用开发框架。已经开始出现,angular生态下的ionic、vue生态下的vux等移动终端框架已经广泛使用。此外,在三大框架体系下扩展了原生桌面应用的开发能力,从而再次提升了javascript在编程领域的价值。
Webmascript 5到ECMAscript6
经过多年的发展,WEB标准终于迎来了新的更新,那就是ECMAscript 6的发布,它加入了很多新的语法,大大拓展了javascript的发展潜力。在此期间,由于浏览器ES6语法支持的滞后,出现了Babel、Typescript等一系列编译工具将ES6代码编译成ES5,以及webpack的工程化建设的完善。今天前端已经进入了一个类似于大前端的时期,是一个集编码、发布、测试、工程建设为一体的整体解决方案系统。同时对前端工作人员的技术要求也更加全面和深入。
web程序集
Javascript自诞生以来就成为最流行的编程语言,这是由Web的发展推动的。Web应用变得越来越复杂,但这也逐渐暴露了Javascript的问题:

过于灵活的语法使得开发大型Web项目变得困难;
性能无法满足某些场景的需求。
鉴于以上两个缺陷,近年来出现了一些JS的替代语言,如:
微软的Typescript通过在JS中加入静态类型检查,改善了JS的松散语法,增强了代码的健壮性;
谷歌的Dart在浏览器中引入新的虚拟机,直接运行Dart程序,提高性能;
火狐的asm.js是js的子集,JS引擎优化了ASM.js的性能。
上述尝试各有利弊,其中:
Typescript只是解决了JS语法松散的问题,最后需要编译成JS才能运行,并没有提升性能;
Dart只能在Chrome预览版运行,没有主流浏览器的支持,用Dart开发的人也不多;
Asm.js语法过于简单,局限性大,开发效率低。
三大浏览器巨头各自提出解决方案,互不兼容,违背了Web的宗旨;正是技术规范的统一使Web走到了今天,所以迫切需要形成一套新的规范来解决JS面临的问题。
于是WebAssembly诞生了。WebAssembly是一种新的字节码格式,主流浏览器已经支持WebAssembly。
WebAssembly/wasm WebAssembly或wasm是一种全新的格式,可移植、体积小、加载速度快,并且与Web兼容。
高效率
WebAssembly有一套完整的语义。事实上,wasm是一种小型快速加载的二进制格式,其目标是充分发挥硬件能力,实现原生执行效率。
公开
WebAssembly为调试、测试、实验、优化、学习、教学或编程设计了非常规则的文本格式。你可以在网页上以这种文本格式查看wasm模块的源代码。
安全
WebAssembly运行在沙盒执行环境中,甚至可以在现有的Javascript虚拟机中实现。在web环境下,WebAssembly会严格遵守同源策略和浏览器安全策略。

标准化
WebAssembly被设计为在web中无版本、可测试和向后兼容。WebAssembly可以通过Javascript调用,进入Javascript上下文,或者像Web API一样调用浏览器的功能。当然,WebAssembly不仅可以在浏览器上运行,也可以在非web环境下运行。
今天的前端
如今的前端技术已经形成了一个庞大的技术体系。以Github为代表的代码管理仓库;以NPM、纱为代表的包管理工具;ES6和由Babel和Typescript组成的脚本系统;HTML5CSS3及相应的处理技术;React、Vue、Angular为代表的框架;Webpack是以web为代表的打包工具;基于Node.js的Express和KOA后端框架;混合技术。
随着webAssembly的快速发展和成熟应用,是否会成为Web技术的又一次创新?我们拭目以待。


