前端演义
Web开发出现时间虽然看起来很短,但是已经跨越了很多阶段。就让我们从那看似有些原始和遥远的早期说起。
洪荒年代
首先,要有个浏览器。因此,必须先得说一说网景公司发布netscape Navigator这事儿。
网景认为让浏览器能够执行脚本是个不错的主意,Brendan Eich接受了这个任务。显然,最开始网景并不认为执行脚本是一项非常重要的任务,因此只给了Brendan Eich很短的时间实现这个需求。
所以,最开始的网站基本上都只是呈现一些静态的网页。javascript是什么?它有什么用?难道浏览器不是默认禁止运行javascript脚本吗?
后来,有的网站开始让javascript语言默默的在背后做一些事情,比如统计页面访问量之类的。用户基本是不会注意到这些事情的。
再后来,网页开始加入少量的交互,有一些动态的的元素,比如图片动画、元素显隐切换之类。
当然,开始只有原生的api可以使用,并没有什么框架。当时,编写js是不讲究什么方法和技巧的,js语言是被无数的误解和鄙视所包围的,是被看做一门垃圾语言的。js代码只是夹在网页中的一些碎片,似乎并没人把它看成什么正经的东西。写js代码的人只是个偶尔客串一下的临时工,是不被看做程序员的。
然而,大家都知道原生api是出了名的啰嗦繁琐。而且,自从第一次浏览器大战开始,各种浏览器api之间的兼容性问题就成为了js程序员的梦魇。而浏览器大战是伴随着浏览器而生的。网景公司只是火了很短的时间,就被微软毫不留情的镇压了,一直登过了很多年才以FireFox的名义卷土重来。然后第二次浏览器大战又开始了。这是后话。
这就是当时的网页编程,就像是编程的西部荒野。就是从这片荒野上,那些早期的淘金者发明开发出来一些工具和技巧。洪荒般的混沌中开始出现一些陨石、流星,在黑暗中闪烁各自的光芒。以下是一份很不完整的名单:Prototype,Mootools,Scriptaculous, YUI(yahoo),DOJO,ExtJs。
一桶中原
时间到了2006年。jQuery出现了,并且迅速强势崛起,一统天下,开启了它的十年辉煌。
与jQuery相伴的是backbone。这是第一个从架构角度考虑js的框架库。我知道它的作者还创造了underscore.js,coffee-script。后者现在还是我喜爱的js转译语言,一切只因coffee的缩进之美带来的简约。
群雄再起
俗话说,天下大势,喝酒必分,分酒必喝。时间推进到2011年,google推出了angularjs。angularjs是一个重量级的框架,也是一次思维的革命。独孤寂寞的jquery终于引来了它的重量级伙伴或者对手。它在框架或库的领域隆重推出了单页应用的概念(SPA)。从实践角度,SPA已经存在很长时间了。gmail可算得上其中最典型最著名的范例。其它如flickr,instagram,甚至facebook都可以从某种程度上归纳其中。angularjs终于把这种实践提取成为框架,从而令js编程界的普罗大众人人能用,得心应手。度化之功可谓令人高山仰止。
如果说jQuery是设计网页程序的工具箱,那么angular就是设计网页程序的数控机床。
乱花渐欲迷人眼,浅草才能没马蹄。
自此,再次开启了前端框架领域群雄并起的年代。与第二次浏览器大战一起演绎着轰轰烈烈的前端开发历史。
这是最好的时代,也是最坏的时代。
以下文字有明显副作用,选择困难症患者不宜阅读。坚持阅读者请自备解药。
我是该坚守jQuery,还是投入新框架?
我正在用angular 1, 我该不该入angular2?
我是该用小而美的vue,还是该用大而全的emberjs?
我是该用全框架的ng,还是该用只管View的React?
搭配React该用flux,reflux,还是redux?我要不要使用immutalbe.js, relay.js, …
fxp是神马鬼?我该选rx.js, 还是bacon.js或者其它?
我该选名牌大厂的ng,react,或者非著名开源库比如vue.js, avalon.js, mithril.js, riot.js, …?
当然,在这里必须要提一下一下Domcom这个站在巨人肩膀上,去繁就简的框架。
双峰辉映
在这个时代,必须要提起另一个时空发生的事情,也就是2009年横空出世的node.js。node.js如同一扇传送门,将德拉诺大陆的部落大军不断传送到和平的艾泽拉斯大陆。从此,那些从javascript洪荒年代成长至今的前端开发大军开始侵入后端服务器开发这个领域。后端的守护者也为前端提供了接应,各种帮助前端提升力量的工具被开发出来:browserify, grunt, gulp,webpack, babel,npm等等。Javascript开始了空前的繁荣。
标准天下
那些守护Javascript的泰坦们对于德拉诺星球和艾泽拉斯星球的人们越来越醉心于各种魔法和奥术的现象忧心忡忡,担心这个世界总有一天会因为过度使用魔法奥术而招引来邪能的攻击以致于毁灭。他们试图通过增加新的标准来纠正这个趋势。以下就是泰坦们最新研究的两层教义。
es6(ES2015)
es7(es2017)
这两个新教(biao)义(zhun)能不能治愈选择症呢?看来效果不十分理想,反倒有加重症状的趋向。因为我们的选择清单上又多了一些项目:
我该不该采用ES6?
我该不该采用ES7?
为了使用ES6/7, 我是该选用polyfill, babel,typescript或者其它什么方法?