以前我们都说
PHP是世界上最好的语言
复制代码
但是现在,我们可以说
JS是世界上最好的语言
复制代码
第一阶段:
在最初的切图仔工程师,前端能做的很有限,基本就是根据UI的设计稿还原成静态页面,数据绑定也不关前端的事,由后端模板渲染输出到客户端,这个阶段也叫轻前端。
第二阶段:
随着软硬件的发展,页面层的交互和复杂度逐渐提升,单单靠后端渲染很难满足实际需求了,后来就把数据绑定和页面交互这一块移到客户端来做。
这中间扮演重要角色的就是ajax,ajax这玩意最初是微软推出的,但其它浏览器厂商不想遵循微软的这套规则,联合推出了自己的一套(w3c标准),这也是现在很多浏览器存在兼容性的原因所在。
ajax的出现让前端对界面层有了掌控的能力,也开始有着前后端分离的概念,简单说就是后端提供api,前端同学根据api玩转页面层,其实也只能说是接口处分离,你说前后端分离呢,那前端同学是不是就不需要了解http协议?不需要了解数据库逻辑关系?答案是否定的,还是需要了解的,甚至要做过后端才能更好的了解前端,设计出符合前后端的api出来。
但PC时代由于存在IE这个巨无霸,JS的很多api存在兼容性,而且由于模板绑定现在由前端做,复杂性可见一斑,这让前端界很蛋疼,于是乱世出英雄,jquery出现了,jquery的dom操作和模板的便捷性让其在前端界的地位无可替代,这个阶段也叫重前端。
第三阶段
懒,是程序员的第一生产力,由于每次绑定数据或页面交互都要去操作dom节点,能不能屏蔽底层dom节点?于是有了前端三架马车vue,react,angular,最早提出双向数据绑定应该是backone.js,MVVM开发模式让我们屏蔽dom操作,只需要关注数据层,单页应用的出现意味着前端的入口由html转向js,我们叫'all in js',但现在html、css、img等等转移到了js上,js急需一套构建工具,于是webpack出现了,由于node的横空出世,前端可以说建立了与系统层的连接,有了自己的包管理工具npm,前端由此建立了一套自己的工程化体系。
第四阶段
-
第一个方向:html5与原生这十几年来可以说是相爱相杀,html5不如原生体验好,这是一直以来的痛点,但html5也有原生不可比拟的跨端能力,java一直梦寐以求的'编写一次,跨端运行'的目标没想到被html5实现了,随着weex,react-native的跨端实现方案的逐渐成熟,可以达到与原生媲美的能力,有统一大前端的能力。
-
第二个方向:是微信小程序,由于微信的巨大流量入口,小程序的发展必将迅猛,
-
第三个方向:PWA是google力推的一个方向,可以安装成app和离线储存,在国外的推特等网站已经有了实践,但由于国内IE的存在短时间内火不起来。
-
第四个方向:webAssembly,我在一个大会上听到的,webAssembly可以运行c++等底层语言,上个月有出了个用c++写的游戏框架,通过webAssembly编译运行在浏览器,其它语言也可以用来写浏览器端了,不过webAssembly也有些问题存在,例如强类型语言怎么转弱类型语言等等;
-
其它方向:随着越来越多终端设备的出现,终端必将诞生越来越多前端的沃土,拭目以待!