HTML/Javascript/CSS號稱前端三大利器,我們今天要講的就是最像一門計算機語言的Javascript。那講Javascript,為什么標題是ES6/ES2015,這個ES是什么東東呢?和Javascript有什么關系呢?
Javascript的前世今生
話說還得從Javascript的前世今生說起。首先眾所周知,工作于 Netscape 的 Brendan Eich,開始著手為即將在 1995 年發行的 Netscape Navigator 2.0 開發一個稱之為 LiveScript 的腳本語言,當時的目的是在瀏覽器和服務器(本來要叫它 LiveWire)端使用它。Netscape 與 Sun 及時完成 LiveScript 實現。就在 Netscape Navigator 2.0 即將正式發布前,Netscape 將其更名為 JavaScript,目的是為了利用 Java 這個因特網時髦詞匯。Netscape 的賭注最終得到回報,JavaScript 從此變成了因特網的必備組件。從本質上來說JavaScript和Java沒什么關系。
隨后1996年8月,微軟模仿JavaScript開發了一種相近的語言,取名為JScript(JavaScript是Netscape的注冊商標,微軟不能用),首先內置于IE 3.0。網景公司面臨喪失瀏覽器腳本語言的主導權的局面。
1996年11月,網景公司決定將JavaScript提交給國際標準化組織ECMA,希望JavaScript能夠成為國際標準,以此抵抗微軟。
1997年7月,ECMA組織發布262號標準文件(ECMA-262)的第一版,規定了瀏覽器腳本語言的標準,并將這種語言稱為ECMAScript。這個版本就是ECMAScript 1.0版。之所以不叫JavaScript,一方面是由于商標的關系,Java是Sun公司的商標,根據一份授權協議,只有Netscape公司可以合法地使用JavaScript這個名字,且JavaScript已經被Netscape公司注冊為商標,另一方面也是想體現這門語言的制定者是ECMA,不是Netscape,這樣有利于保證這門語言的開放性和中立性。因此,ECMAScript和JavaScript的關系是,前者是后者的規格,后者是前者的一種實現。在日常場合,這兩個詞是可以互換的。
1998年6月,ECMAScript 2.0版發布。
1999年12月,ECMAScript 3.0版發布,成為JavaScript的通行標準,得到了廣泛支持。
ECMAScript和JavaScript的版本
2007年10月,ECMAScript 4.0版草案發布,對3.0版做了大幅升級,預計次年8月發布正式版本。草案發布后,由于4.0版的目標過于激進,各方對于是否通過這個標準,發生了嚴重分歧。以Yahoo、Microsoft、Google為首的大公司,反對JavaScript的大幅升級,主張小幅改動;以JavaScript創造者Brendan Eich為首的Mozilla公司,則堅持當前的草案。
2008年7月,由于對于下一個版本應該包括哪些功能,各方分歧太大,爭論過于激進,ECMA開會決定,中止ECMAScript 4.0的開發,將其中涉及現有功能改善的一小部分,發布為ECMAScript 3.1,而將其他激進的設想擴大范圍,放入以后的版本,由于會議的氣氛,該版本的項目代號起名為Harmony(和諧)。會后不久,ECMAScript 3.1就改名為ECMAScript 5。
2009年12月,ECMAScript 5.0版正式發布。Harmony項目則一分為二,一些較為可行的設想定名為Javascript.next繼續開發,后來演變成ECMAScript 6;一些不是很成熟的設想,則被視為JavaScript.next.next,在更遠的將來再考慮推出。
2011年6月,ECMAscript 5.1版發布,并且成為ISO國際標準(ISO/IEC 16262:2011)。
2013年3月,ECMAScript 6草案凍結,不再添加新功能。新的功能設想將被放到ECMAScript 7。
2013年12月,ECMAScript 6草案發布。然后是12個月的討論期,聽取各方反饋。
2015年6月,ECMAScript 6的第一個版本終于正式發布,它的目標,是使得 JavaScript 語言可以用來編寫復雜的大型應用程序,成為企業級開發語言。而ES2015 則是至當時發布的第一個版本的正式名稱,特指該年發布的正式版本的語言標準。
說實話,感覺ES2015發布真的好累。但是為什么大家打架打的這么厲害呢,還得了解一下當時Javscript在各個方面迅速發展的大背景。
Javscript的迅速發展
2008年,V8編譯器誕生。這是Google公司為Chrome瀏覽器而開發的,它的特點是讓Javascript的運行變得非常快。它提高了JavaScript的性能,推動了語法的改進和標準化,改變外界對JavaScript的不佳印象。同時,V8是開源的,任何人想要一種快速的嵌入式腳本語言,都可以采用V8,這拓展了JavaScript的應用領域。
2009年,Node.js項目誕生,創始人為Ryan Dahl,它標志著Javascript可以用于服務器端編程,從此網站的前端和后端可以使用同一種語言開發。并且,Node.js可以承受很大的并發流量,使得開發某些互聯網大規模的實時應用變得容易。
2009年,Jeremy Ashkenas發布了CoffeeScript的最初版本。CoffeeScript可以被轉化為JavaScript運行,但是語法要比JavaScript簡潔。這開啟了其他語言轉為JavaScript的風潮。
2009年,PhoneGap項目誕生,它將HTML5和JavaScript引入移動設備的應用程序開發,主要針對iOS和Android平臺,使得JavaScript可以用于跨平臺的應用程序開發。
2010年,三個重要的項目誕生,分別是NPM、BackboneJS和RequireJS,標志著JavaScript進入模塊化開發的時代。
2011年,微軟公司發布Windows 8操作系統,將JavaScript作為應用程序的開發語言之一,直接提供系統支持。
2011年,Google發布了Dart語言,目的是為了結束JavaScript語言在瀏覽器中的壟斷,提供更合理、更強大的語法和功能。Chromium瀏覽器有內置的Dart虛擬機,可以運行Dart程序,但Dart程序也可以被編譯成JavaScript程序運行。
2011年,微軟工程師Scott Hanselman提出,JavaScript將是互聯網的匯編語言。因為它無所不在,而且正在變得越來越快。其他語言的程序可以被轉成JavaScript語言,然后在瀏覽器中運行。
2012年,單頁面應用程序框架(single-page app framework)開始崛起,AngularJS項目和Ember項目都發布了1.0版本。
2012年,微軟發布TypeScript語言。該語言被設計成JavaScript的超集,這意味著所有JavaScipt程序,都可以不經修改地在TypeScript中運行。同時,TypeScript添加了很多新的語法特性,主要目的是為了開發大型程序,然后還可以被編譯成JavaScript運行。
可以說Google的V8給Javascript注入了一股強心劑,讓Javascript開始變得成為一門高性能的語言,隨后成為各個領域應用的推手。而后各大公司都開始推出自己的Javascript語言版本,進入了群雄爭霸的局面。自然這種情況是不利于語言的統一發展的。而國際標準化組織ECMA的標準版本ECMAScript2015才被寄予厚望,希望能夠讓Javascript成為一門真正廣泛應用的企業級開發語言。
參考文獻
1、http://es6.ruanyifeng.com/#docs/intro
2、http://www.lxweimin.com/p/1cd0b2cb3ec4