JavaScript 因?yàn)榛ヂ?lián)網(wǎng)而生,緊跟著瀏覽器的出現(xiàn)而問世?;仡櫵臍v史,就要從瀏覽器的歷史講起。
1990年底,歐洲核能研究組織(CERN)科學(xué)家 Tim Berners-Lee,在全世界最大的電腦網(wǎng)絡(luò)——互聯(lián)網(wǎng)的基礎(chǔ)上,發(fā)明了萬維網(wǎng)(World Wide Web),從此可以在網(wǎng)上瀏覽網(wǎng)頁文件。
最早的網(wǎng)頁只能在操作系統(tǒng)的終端里瀏覽,也就是說只能使用命令行操作,網(wǎng)頁都是在字符窗口中顯示,這當(dāng)然非常不方便。
1992年底,美國國家超級(jí)電腦應(yīng)用中心(NCSA)開始開發(fā)一個(gè)獨(dú)立的瀏覽器,叫做 Mosaic。這是人類歷史上第一個(gè)瀏覽器,從此網(wǎng)頁可以在圖形界面的窗口瀏覽。
1994年10月,NCSA 的一個(gè)主要程序員 Marc Andreessen 聯(lián)合風(fēng)險(xiǎn)投資家 Jim Clark,成立了 Mosaic 通信公司(Mosaic Communications),不久后改名為 Netscape。這家公司的方向,就是在 Mosaic 的基礎(chǔ)上,開發(fā)面向普通用戶的新一代的瀏覽器 Netscape Navigator。
1994年12月,Navigator 發(fā)布了1.0版,市場(chǎng)份額一舉超過90%。
Netscape 公司很快發(fā)現(xiàn),Navigator 瀏覽器需要一種可以嵌入網(wǎng)頁的腳本語言,用來控制瀏覽器行為。當(dāng)時(shí),網(wǎng)速很慢而且上網(wǎng)費(fèi)很貴,有些操作不宜在服務(wù)器端完成。
比如,如果用戶忘記填寫“用戶名”,就點(diǎn)了“發(fā)送”按鈕,到服務(wù)器再發(fā)現(xiàn)這一點(diǎn)就有點(diǎn)太晚了,最好能在用戶發(fā)出數(shù)據(jù)之前,就告訴用戶“請(qǐng)?zhí)顚懹脩裘?。這就需要在網(wǎng)頁中嵌入小程序,讓瀏覽器檢查每一欄是否都填寫了。
管理層對(duì)這種瀏覽器腳本語言的設(shè)想是:功能不需要太強(qiáng),語法較為簡(jiǎn)單,容易學(xué)習(xí)和部署。那一年,正逢 Sun 公司的 Java 語言問世,市場(chǎng)推廣活動(dòng)非常成功。
Netscape 公司決定與 Sun 公司合作,瀏覽器支持嵌入 Java 小程序(后來稱為 Java applet)。但是,瀏覽器腳本語言是否就選用 Java,則存在爭(zhēng)論。
后來,還是決定不使用 Java,因?yàn)榫W(wǎng)頁小程序不需要 Java 這么“重”的語法。但是,同時(shí)也決定腳本語言的語法要接近 Java,并且可以支持 Java 程序。這些設(shè)想直接排除了使用現(xiàn)存語言,比如 Perl、Python 和 TCL。
1995年,Netscape 公司雇傭了程序員 Brendan Eich 開發(fā)這種網(wǎng)頁腳本語言。Brendan Eich 有很強(qiáng)的函數(shù)式編程背景,希望以 Scheme 語言(函數(shù)式語言鼻祖 LISP 語言的一種方言)為藍(lán)本,實(shí)現(xiàn)這種新語言。
1995年5月,Brendan Eich 只用了10天,就設(shè)計(jì)完成了這種語言的第一版。它是一個(gè)大雜燴,語法有多個(gè)來源。
基本語法:借鑒 C 語言和 Java 語言。
數(shù)據(jù)結(jié)構(gòu):借鑒 Java 語言,包括將值分成原始值和對(duì)象兩大類。
函數(shù)的用法:借鑒 Scheme 語言和 Awk 語言,將函數(shù)當(dāng)作第一等公民,并引入閉包。
原型繼承模型:借鑒 Self 語言(Smalltalk 的一種變種)。
正則表達(dá)式:借鑒 Perl 語言。
字符串和數(shù)組處理:借鑒 Python 語言。
為了保持簡(jiǎn)單,這種腳本語言缺少一些關(guān)鍵的功能,比如塊級(jí)作用域、模塊、子類型(subtyping)等等,但是可以利用現(xiàn)有功能找出解決辦法。這種功能的不足,直接導(dǎo)致了后來 JavaScript 的一個(gè)顯著特點(diǎn):對(duì)于其他語言,你需要學(xué)習(xí)語言的各種功能,而對(duì)于 JavaScript,你常常需要學(xué)習(xí)各種解決問題的模式。而且由于來源多樣,從一開始就注定,JavaScript 的編程風(fēng)格是函數(shù)式編程和面向?qū)ο缶幊痰囊环N混合體。
Netscape 公司的這種瀏覽器腳本語言,最初名字叫做 Mocha,1995年9月改為 LiveScript。12月,Netscape 公司與 Sun 公司(Java 語言的發(fā)明者和所有者)達(dá)成協(xié)議,后者允許將這種語言叫做 JavaScript。這樣一來,Netscape 公司可以借助 Java 語言的聲勢(shì),而 Sun 公司則將自己的影響力擴(kuò)展到了瀏覽器。
之所以起這個(gè)名字,并不是因?yàn)?JavaScript 本身與 Java 語言有多么深的關(guān)系(事實(shí)上,兩者關(guān)系并不深,詳見下節(jié)),而是因?yàn)?Netscape 公司已經(jīng)決定,使用 Java 語言開發(fā)網(wǎng)絡(luò)應(yīng)用程序,JavaScript 可以像膠水一樣,將各個(gè)部分連接起來。當(dāng)然,后來的歷史是 Java 語言的瀏覽器插件失敗了,JavaScript 反而發(fā)揚(yáng)光大。
1995年12月4日,Netscape 公司與 Sun 公司聯(lián)合發(fā)布了 JavaScript 語言,對(duì)外宣傳 JavaScript 是 Java 的補(bǔ)充,屬于輕量級(jí)的 Java,專門用來操作網(wǎng)頁。
1996年3月,Navigator 2.0 瀏覽器正式內(nèi)置了 JavaScript 腳本語言。
這里專門說一下 JavaScript 和 Java 的關(guān)系。它們是兩種不一樣的語言,但是彼此存在聯(lián)系。
JavaScript 的基本語法和對(duì)象體系,是模仿 Java 而設(shè)計(jì)的。但是,JavaScript 沒有采用 Java 的靜態(tài)類型。正是因?yàn)?JavaScript 與 Java 有很大的相似性,所以這門語言才從一開始的 LiveScript 改名為 JavaScript?;旧希琂avaScript 這個(gè)名字的原意是“很像Java的腳本語言”。
JavaScript 語言的函數(shù)是一種獨(dú)立的數(shù)據(jù)類型,以及采用基于原型對(duì)象(prototype)的繼承鏈。這是它與 Java 語法最大的兩點(diǎn)區(qū)別。JavaScript 語法要比 Java 自由得多。
另外,Java 語言需要編譯,而 JavaScript 語言則是運(yùn)行時(shí)由解釋器直接執(zhí)行。
總之,JavaScript 的原始設(shè)計(jì)目標(biāo)是一種小型的、簡(jiǎn)單的動(dòng)態(tài)語言,與 Java 有足夠的相似性,使得使用者(尤其是 Java 程序員)可以快速上手。
1996年8月,微軟模仿 JavaScript 開發(fā)了一種相近的語言,取名為JScript(JavaScript 是 Netscape 的注冊(cè)商標(biāo),微軟不能用),首先內(nèi)置于IE 3.0。Netscape 公司面臨喪失瀏覽器腳本語言的主導(dǎo)權(quán)的局面。
1996年11月,Netscape 公司決定將 JavaScript 提交給國際標(biāo)準(zhǔn)化組織 ECMA(European Computer Manufacturers Association),希望 JavaScript 能夠成為國際標(biāo)準(zhǔn),以此抵抗微軟。ECMA 的39號(hào)技術(shù)委員會(huì)(Technical Committee 39)負(fù)責(zé)制定和審核這個(gè)標(biāo)準(zhǔn),成員由業(yè)內(nèi)的大公司派出的工程師組成,目前共25個(gè)人。該委員會(huì)定期開會(huì),所有的郵件討論和會(huì)議記錄,都是公開的。
1997年7月,ECMA 組織發(fā)布262號(hào)標(biāo)準(zhǔn)文件(ECMA-262)的第一版,規(guī)定了瀏覽器腳本語言的標(biāo)準(zhǔn),并將這種語言稱為 ECMAScript。這個(gè)版本就是 ECMAScript 1.0 版。之所以不叫 JavaScript,一方面是由于商標(biāo)的關(guān)系,Java 是 Sun 公司的商標(biāo),根據(jù)一份授權(quán)協(xié)議,只有 Netscape 公司可以合法地使用 JavaScript 這個(gè)名字,且 JavaScript 已經(jīng)被 Netscape 公司注冊(cè)為商標(biāo),另一方面也是想體現(xiàn)這門語言的制定者是 ECMA,不是 Netscape,這樣有利于保證這門語言的開放性和中立性。因此,ECMAScript 和 JavaScript 的關(guān)系是,前者是后者的規(guī)格,后者是前者的一種實(shí)現(xiàn)。在日常場(chǎng)合,這兩個(gè)詞是可以互換的。
ECMAScript 只用來標(biāo)準(zhǔn)化 JavaScript 這種語言的基本語法結(jié)構(gòu),與部署環(huán)境相關(guān)的標(biāo)準(zhǔn)都由其他標(biāo)準(zhǔn)規(guī)定,比如 DOM 的標(biāo)準(zhǔn)就是由 W3C組織(World Wide Web Consortium)制定的。
ECMA-262 標(biāo)準(zhǔn)后來也被另一個(gè)國際標(biāo)準(zhǔn)化組織 ISO(International Organization for Standardization)批準(zhǔn),標(biāo)準(zhǔn)號(hào)是 ISO-16262。
1997年7月,ECMAScript 1.0發(fā)布。
1998年6月,ECMAScript 2.0版發(fā)布。
1999年12月,ECMAScript 3.0版發(fā)布,成為 JavaScript 的通行標(biāo)準(zhǔn),得到了廣泛支持。
2007年10月,ECMAScript 4.0版草案發(fā)布,對(duì)3.0版做了大幅升級(jí),預(yù)計(jì)次年8月發(fā)布正式版本。草案發(fā)布后,由于4.0版的目標(biāo)過于激進(jìn),各方對(duì)于是否通過這個(gè)標(biāo)準(zhǔn),發(fā)生了嚴(yán)重分歧。
以 Yahoo、Microsoft、Google 為首的大公司,反對(duì) JavaScript 的大幅升級(jí),主張小幅改動(dòng);以 JavaScript 創(chuàng)造者 Brendan Eich 為首的 Mozilla 公司,則堅(jiān)持當(dāng)前的草案。
2008年7月,由于對(duì)于下一個(gè)版本應(yīng)該包括哪些功能,各方分歧太大,爭(zhēng)論過于激進(jìn),ECMA 開會(huì)決定,中止 ECMAScript 4.0 的開發(fā)(即廢除了這個(gè)版本),將其中涉及現(xiàn)有功能改善的一小部分,發(fā)布為 ECMAScript 3.1,而將其他激進(jìn)的設(shè)想擴(kuò)大范圍,放入以后的版本,由于會(huì)議的氣氛,該版本的項(xiàng)目代號(hào)起名為 Harmony(和諧)。會(huì)后不久,ECMAScript 3.1 就改名為 ECMAScript 5。
2009年12月,ECMAScript 5.0版 正式發(fā)布。Harmony 項(xiàng)目則一分為二,一些較為可行的設(shè)想定名為 JavaScript.next 繼續(xù)開發(fā),后來演變成 ECMAScript 6;一些不是很成熟的設(shè)想,則被視為 JavaScript.next.next,在更遠(yuǎn)的將來再考慮推出。
TC39 的總體考慮是,ECMAScript 5 與 ECMAScript 3 基本保持兼容,較大的語法修正和新功能加入,將由 JavaScript.next 完成。當(dāng)時(shí),JavaScript.next 指的是ECMAScript 6。第六版發(fā)布以后,將指 ECMAScript 7。
TC39 預(yù)計(jì),ECMAScript 5 會(huì)在2013年的年中成為 JavaScript 開發(fā)的主流標(biāo)準(zhǔn),并在此后五年中一直保持這個(gè)位置。
2011年6月,ECMAscript 5.1版發(fā)布,并且成為 ISO 國際標(biāo)準(zhǔn)(ISO/IEC 16262:2011)。到了2012年底,所有主要瀏覽器都支持 ECMAScript 5.1版的全部功能。
2013年3月,ECMAScript 6 草案凍結(jié),不再添加新功能。新的功能設(shè)想將被放到 ECMAScript 7。
2013年12月,ECMAScript 6 草案發(fā)布。然后是12個(gè)月的討論期,聽取各方反饋。
2015年6月,ECMAScript 6 正式發(fā)布,并且更名為“ECMAScript 2015”。這是因?yàn)?TC39 委員會(huì)計(jì)劃,以后每年發(fā)布一個(gè) ECMAScript 的版本,下一個(gè)版本在2016年發(fā)布,稱為”ECMAScript 2016”,2017年發(fā)布“ECMAScript 2017”,以此類推。
JavaScript 伴隨著互聯(lián)網(wǎng)的發(fā)展一起發(fā)展。互聯(lián)網(wǎng)周邊技術(shù)的快速發(fā)展,刺激和推動(dòng)了 JavaScript 語言的發(fā)展。下面,回顧一下 JavaScript 的周邊應(yīng)用發(fā)展。
1996年,樣式表標(biāo)準(zhǔn) CSS 第一版發(fā)布。
1997年,DHTML(Dynamic HTML,動(dòng)態(tài) HTML)發(fā)布,允許動(dòng)態(tài)改變網(wǎng)頁內(nèi)容。這標(biāo)志著 DOM 模式(Document Object Model,文檔對(duì)象模型)正式應(yīng)用。
1998年,Netscape 公司開源了瀏覽器,這導(dǎo)致了 Mozilla 項(xiàng)目的誕生。幾個(gè)月后,美國在線(AOL)宣布并購 Netscape。
1999年,IE 5部署了 XMLHttpRequest 接口,允許 JavaScript 發(fā)出 HTTP 請(qǐng)求,為后來大行其道的 Ajax 應(yīng)用創(chuàng)造了條件。
2000年,KDE 項(xiàng)目重寫了瀏覽器引擎 KHTML,為后來的 WebKit 和 Blink 引擎打下基礎(chǔ)。這一年的10月23日,KDE 2.0發(fā)布,第一次將 KHTML 瀏覽器包括其中。
2001年,微軟公司時(shí)隔5年之后,發(fā)布了 IE 瀏覽器的下一個(gè)版本 Internet Explorer 6。這是當(dāng)時(shí)最先進(jìn)的瀏覽器,它后來統(tǒng)治了瀏覽器市場(chǎng)多年。
2001年,Douglas Crockford 提出了 JSON 格式,用于取代 XML 格式,進(jìn)行服務(wù)器和網(wǎng)頁之間的數(shù)據(jù)交換。JavaScript 可以原生支持這種格式,不需要額外部署代碼。
2002年,Mozilla 項(xiàng)目發(fā)布了它的瀏覽器的第一版,后來起名為 Firefox。
2003年,蘋果公司發(fā)布了 Safari 瀏覽器的第一版。
2004年,Google 公司發(fā)布了 Gmail,促成了互聯(lián)網(wǎng)應(yīng)用程序(Web Application)這個(gè)概念的誕生。由于 Gmail 是在4月1日發(fā)布的,很多人起初以為這只是一個(gè)玩笑。
2004年,Dojo 框架誕生,為不同瀏覽器提供了同一接口,并為主要功能提供了便利的調(diào)用方法。這標(biāo)志著 JavaScript 編程框架的時(shí)代開始來臨。
2004年,WHATWG 組織成立,致力于加速 HTML 語言的標(biāo)準(zhǔn)化進(jìn)程。
2005年,蘋果公司在 KHTML 引擎基礎(chǔ)上,建立了 WebKit 引擎。
2005年,Ajax 方法(Asynchronous JavaScript and XML)正式誕生,Jesse James Garrett 發(fā)明了這個(gè)詞匯。它開始流行的標(biāo)志是,2月份發(fā)布的 Google Maps 項(xiàng)目大量采用該方法。它幾乎成了新一代網(wǎng)站的標(biāo)準(zhǔn)做法,促成了 Web 2.0時(shí)代的來臨。
2005年,Apache 基金會(huì)發(fā)布了 CouchDB 數(shù)據(jù)庫。這是一個(gè)基于 JSON 格式的數(shù)據(jù)庫,可以用 JavaScript 函數(shù)定義視圖和索引。它在本質(zhì)上有別于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,標(biāo)識(shí)著 NoSQL 類型的數(shù)據(jù)庫誕生。
2006年,jQuery 函數(shù)庫誕生,作者為John Resig。jQuery 為操作網(wǎng)頁 DOM 結(jié)構(gòu)提供了非常強(qiáng)大易用的接口,成為了使用最廣泛的函數(shù)庫,并且讓 JavaScript 語言的應(yīng)用難度大大降低,推動(dòng)了這種語言的流行。
2006年,微軟公司發(fā)布 IE 7,標(biāo)志重新開始啟動(dòng)瀏覽器的開發(fā)。
2006年,Google推出 Google Web Toolkit 項(xiàng)目(縮寫為 GWT),提供 Java 編譯成 JavaScript 的功能,開創(chuàng)了將其他語言轉(zhuǎn)為 JavaScript 的先河。
2007年,Webkit 引擎在 iPhone 手機(jī)中得到部署。它最初基于 KDE 項(xiàng)目,2003年蘋果公司首先采用,2005年開源。這標(biāo)志著 JavaScript 語言開始能在手機(jī)中使用了,意味著有可能寫出在桌面電腦和手機(jī)中都能使用的程序。
2007年,Douglas Crockford 發(fā)表了名為《JavaScript: The good parts》的演講,次年由 O'Reilly 出版社出版。這標(biāo)志著軟件行業(yè)開始嚴(yán)肅對(duì)待 JavaScript 語言,對(duì)它的語法開始重新認(rèn)識(shí),
2008年,V8 編譯器誕生。這是 Google 公司為 Chrome 瀏覽器而開發(fā)的,它的特點(diǎn)是讓 JavaScript 的運(yùn)行變得非???。它提高了 JavaScript 的性能,推動(dòng)了語法的改進(jìn)和標(biāo)準(zhǔn)化,改變外界對(duì) JavaScript 的不佳印象。同時(shí),V8 是開源的,任何人想要一種快速的嵌入式腳本語言,都可以采用 V8,這拓展了 JavaScript 的應(yīng)用領(lǐng)域。
2009年,Node.js 項(xiàng)目誕生,創(chuàng)始人為 Ryan Dahl,它標(biāo)志著 JavaScript 可以用于服務(wù)器端編程,從此網(wǎng)站的前端和后端可以使用同一種語言開發(fā)。并且,Node.js 可以承受很大的并發(fā)流量,使得開發(fā)某些互聯(lián)網(wǎng)大規(guī)模的實(shí)時(shí)應(yīng)用變得容易。
2009年,Jeremy Ashkenas 發(fā)布了 CoffeeScript 的最初版本。CoffeeScript 可以被轉(zhuǎn)換為 JavaScript 運(yùn)行,但是語法要比 JavaScript 簡(jiǎn)潔。這開啟了其他語言轉(zhuǎn)為 JavaScript 的風(fēng)潮。
2009年,PhoneGap 項(xiàng)目誕生,它將 HTML5 和 JavaScript 引入移動(dòng)設(shè)備的應(yīng)用程序開發(fā),主要針對(duì) iOS 和 Android 平臺(tái),使得 JavaScript 可以用于跨平臺(tái)的應(yīng)用程序開發(fā)。
2009,Google 發(fā)布 Chrome OS,號(hào)稱是以瀏覽器為基礎(chǔ)發(fā)展成的操作系統(tǒng),允許直接使用 JavaScript 編寫應(yīng)用程序。類似的項(xiàng)目還有 Mozilla 的 Firefox OS。
2010年,三個(gè)重要的項(xiàng)目誕生,分別是 NPM、BackboneJS 和 RequireJS,標(biāo)志著 JavaScript 進(jìn)入模塊化開發(fā)的時(shí)代。
2011年,微軟公司發(fā)布 Windows 8操作系統(tǒng),將 JavaScript 作為應(yīng)用程序的開發(fā)語言之一,直接提供系統(tǒng)支持。
2011年,Google 發(fā)布了 Dart 語言,目的是為了結(jié)束 JavaScript 語言在瀏覽器中的壟斷,提供更合理、更強(qiáng)大的語法和功能。Chromium瀏覽器有內(nèi)置的 Dart 虛擬機(jī),可以運(yùn)行 Dart 程序,但 Dart 程序也可以被編譯成 JavaScript 程序運(yùn)行。
2011年,微軟工程師Scott Hanselman提出,JavaScript 將是互聯(lián)網(wǎng)的匯編語言。因?yàn)樗鼰o所不在,而且正在變得越來越快。其他語言的程序可以被轉(zhuǎn)成 JavaScript 語言,然后在瀏覽器中運(yùn)行。
2012年,單頁面應(yīng)用程序框架(single-page app framework)開始崛起,AngularJS 項(xiàng)目和 Ember 項(xiàng)目都發(fā)布了1.0版本。
2012年,微軟發(fā)布 TypeScript 語言。該語言被設(shè)計(jì)成 JavaScript 的超集,這意味著所有 JavaScript 程序,都可以不經(jīng)修改地在 TypeScript 中運(yùn)行。同時(shí),TypeScript 添加了很多新的語法特性,主要目的是為了開發(fā)大型程序,然后還可以被編譯成 JavaScript 運(yùn)行。
2012年,Mozilla 基金會(huì)提出 asm.js 規(guī)格。asm.js 是 JavaScript 的一個(gè)子集,所有符合 asm.js 的程序都可以在瀏覽器中運(yùn)行,它的特殊之處在于語法有嚴(yán)格限定,可以被快速編譯成性能良好的機(jī)器碼。這樣做的目的,是為了給其他語言提供一個(gè)編譯規(guī)范,使其可以被編譯成高效的 JavaScript 代碼。同時(shí),Mozilla 基金會(huì)還發(fā)起了 Emscripten 項(xiàng)目,目標(biāo)就是提供一個(gè)跨語言的編譯器,能夠?qū)?LLVM 的位代碼(bitcode)轉(zhuǎn)為 JavaScript 代碼,在瀏覽器中運(yùn)行。因?yàn)榇蟛糠?LLVM 位代碼都是從 C / C++ 語言生成的,這意味著 C / C++ 將可以在瀏覽器中運(yùn)行。此外,Mozilla 旗下還有 LLJS (將 JavaScript 轉(zhuǎn)為 C 代碼)項(xiàng)目和 River Trail (一個(gè)用于多核心處理器的 ECMAScript 擴(kuò)展)項(xiàng)目。目前,可以被編譯成 JavaScript 的語言列表,共有將近40種語言。
2013年,Mozilla 基金會(huì)發(fā)布手機(jī)操作系統(tǒng) Firefox OS,該操作系統(tǒng)的整個(gè)用戶界面都使用 JavaScript。
2013年,ECMA 正式推出 JSON 的國際標(biāo)準(zhǔn),這意味著 JSON 格式已經(jīng)變得與 XML 格式一樣重要和正式了。
2013年5月,F(xiàn)acebook 發(fā)布 UI 框架庫 React,引入了新的 JSX 語法,使得 UI 層可以用組件開發(fā),同時(shí)引入了網(wǎng)頁應(yīng)用是狀態(tài)機(jī)的概念。
2014年,微軟推出 JavaScript 的 Windows 庫 WinJS,標(biāo)志微軟公司全面支持 JavaScript 與 Windows 操作系統(tǒng)的融合。
2014年11月,由于對(duì) Joyent 公司壟斷 Node 項(xiàng)目、以及該項(xiàng)目進(jìn)展緩慢的不滿,一部分核心開發(fā)者離開了 Node.js,創(chuàng)造了 io.js 項(xiàng)目,這是一個(gè)更開放、更新更頻繁的 Node.js 版本,很短時(shí)間內(nèi)就發(fā)布到了2.0版。三個(gè)月后,Joyent 公司宣布放棄對(duì) Node 項(xiàng)目的控制,將其轉(zhuǎn)交給新成立的開放性質(zhì)的 Node 基金會(huì)。隨后,io.js 項(xiàng)目宣布回歸 Node,兩個(gè)版本將合并。
2015年3月,F(xiàn)acebook 公司發(fā)布了 React Native 項(xiàng)目,將 React 框架移植到了手機(jī)端,可以用來開發(fā)手機(jī) App。它會(huì)將 JavaScript 代碼轉(zhuǎn)為 iOS 平臺(tái)的 Objective-C 代碼,或者 Android 平臺(tái)的 Java 代碼,從而為 JavaScript 語言開發(fā)高性能的原生 App 打開了一條道路。
2015年4月,Angular 框架宣布,2.0 版將基于微軟公司的TypeScript語言開發(fā),這等于為 JavaScript 語言引入了強(qiáng)類型。
2015年5月,Node 模塊管理器 NPM 超越 CPAN,標(biāo)志著 JavaScript 成為世界上軟件模塊最多的語言。
2015年5月,Google 公司的 Polymer 框架發(fā)布1.0版。該項(xiàng)目的目標(biāo)是生產(chǎn)環(huán)境可以使用 WebComponent 組件,如果能夠達(dá)到目標(biāo),Web 開發(fā)將進(jìn)入一個(gè)全新的以組件為開發(fā)基礎(chǔ)的階段。
2015年6月,ECMA 標(biāo)準(zhǔn)化組織正式批準(zhǔn)了 ECMAScript 6 語言標(biāo)準(zhǔn),定名為《ECMAScript 2015 標(biāo)準(zhǔn)》。JavaScript 語言正式進(jìn)入了下一個(gè)階段,成為一種企業(yè)級(jí)的、開發(fā)大規(guī)模應(yīng)用的語言。這個(gè)標(biāo)準(zhǔn)從提出到批準(zhǔn),歷時(shí)10年,而 JavaScript 語言從誕生至今也已經(jīng)20年了。
2015年6月,Mozilla 在 asm.js 的基礎(chǔ)上發(fā)布 WebAssembly 項(xiàng)目。這是一種 JavaScript 引擎的中間碼格式,全部都是二進(jìn)制,類似于 Java 的字節(jié)碼,有利于移動(dòng)設(shè)備加載 JavaScript 腳本,執(zhí)行速度提高了 20+ 倍。這意味著將來的軟件,會(huì)發(fā)布 JavaScript 二進(jìn)制包。
2016年6月,《ECMAScript 2016 標(biāo)準(zhǔn)》發(fā)布。與前一年發(fā)布的版本相比,它只增加了兩個(gè)較小的特性。
2017年6月,《ECMAScript 2017 標(biāo)準(zhǔn)》發(fā)布,正式引入了 async 函數(shù),使得異步操作的寫法出現(xiàn)了根本的變化。
2017年11月,所有主流瀏覽器全部支持 WebAssembly,這意味著任何語言都可以編譯成 JavaScript,在瀏覽器運(yùn)行。
聯(lián)系客服