ECMAScript 2015 (ECMAScript 6) 發布對前端領域的影響到底有多大?

http://www.ecma-international.org/publications/standards/Ecma-262.htm


正好今天(2015年6月18日)晚間我到 @Roy Li的公司做客交流。我就說今年是非常有意義的一年——2015年是Web的25歲生日,也是JavaScript語言的20歲生日;而今天(美國時間2015年6月17日)更是一個非常有意義的日子。一個是ES2015規範 [1] 正式發布,另一個就是WebAssembly項目的公布 [2] 。

這些新的規範對於JS和Web的未來,對於前端領域的未來,會有顛覆性的影響。

當然這種影響是互相的、持續的。或者說,具體到題主所問的一個版本的spec正式發布這件事情,本身的意義並沒有那麼大,更重要的是整個語言持續發展的進程——只是對於JS社區之外的人看來,ES2015的正式發布可以視作一個里程碑的標誌。

我在今年4月的QConBeijing上的演講《ES6 in Action》[3] 的前半部分說明了ES2015在技術層面上的影響。

但更重要的是生態層面上的影響。在QCon會間的訪談 [4] 中,我聊了一些對JS語言生態的具體看法;且我將在7月的深JS(http://2015.jsconf.cn/)上對此做更詳細深入的探討,目前暫定的演講標題是《JavaScript: The World"s Best Programming Language》[5] ,歡迎大家一起來討論。

--

[1] http://www.ecma-international.org/ecma-262/6.0/index.html

[2] https://brendaneich.com/2015/06/from-asm-js-to-webassembly/

[3] 視頻在此:http://www.infoq.com/cn/presentations/es6-actual-combat 。很遺憾沒有講稿同步,請大家自己打開正文里的slide鏈接手動翻頁。後面的代碼演示也沒有在視頻里展示,(這是QCon演講錄製的很大問題,還有許多其他演講視頻缺了現場代碼演示根本沒法看,所以有可能的話還是到現場看吧!)也只能請大家自己打開這個repo:hax/es6-in-action · GitHub對照著看。

[4] 視頻在此:http://www.infoq.com/cn/interviews/interview-with-heshijun-talk-javascript-achievements 。因為前一天睡眠不夠,有少許口誤,比如「JS發展10年」應為「20年」等,敬請諒解。22分05秒開始是談JS的部分。

[5] 如此不友善的題目,但開噴之前,請參考我在5年前的文章《我為什麼是DC黑─Why I disagree with Douglas Crockford》對當時JS生態的看法,以及此答案 ECMAScript 6 會重蹈 ECMAScript 4 的覆轍嗎? - 賀師俊的回答 中對JavaScript過往歷史的看法。


很多人一提到新的東西,第一反應就是兼容性不夠好,所以我不能用,但是對於ECMAScript 2015 (ECMAScript 6) 而言,它並不一定要等到所有主流瀏覽器都兼容了才可以開始使用。

最應該立刻使用的場景,是那些沒有瀏覽器負擔,自成一體的運行環境,比如node,很多新的語言特性能夠大幅提高編程效率。

其次,是那些能夠接受到ES5的運行環境,比如只需要支持到IE9+的一些Web系統,編寫的時候可以使用ES6,然後在發布的時候用Babel這樣的東西轉換成ES5即可,主流的一些組件化框架都逐漸支持這種方式,比如Angular和React。

如果你的運行環境是ES3的,那這個確實可以先放一放了。


import 和 yield 就夠大殺器了

雖然……作為學術派……我對 yield 的行為感到不爽。存個堆棧能累死你啊!


這種影響很難量化的,只能說影響很大。


最希望就是統一模塊機制!

大家都來import吧(?ω?)ノ


增加了新的語法、新的功能,其中有一些特性已經存在或應用了很長時間。

很多新特性或許會提高開發效率和應用質量,但這種影響是慢慢滲入到前端的各個方面的,時間跨度也很長。由於它的向後兼容,很多現有的東西可能不會應用任何新特性。如果決定用,可能是完全重寫。


語言層面的東西,如果瀏覽器開始支持,那大家都轉過去就是了,我倒是感覺也不會有什麼曠世大影響。

感覺類似發布 CoffeScript、TypeScript 。。。

這個年代語言層面和以前已經不同,太多預編譯系統,可以實現各種語言層面的變換,所以 ECMAScript 發布,願意那樣寫的轉過去就行。

當然如果瀏覽器全部只支持 ECMAScript 6 的化,那就是大家換成那樣的寫法即可,有了很多新特性。

end


ECMAScript6的目標是讓JavaScript能夠編寫大型企業軟體,然後,就要看前端工程師對自己個人的定位了,如果只是做頁面,做視覺,根本不需要關注這個。但是,顯然,新時代的前端工程師是偏向於大前端而言的,前端架構會變得複雜起來。

其實,目前的現狀就是普遍對前端有錯誤的認識,如果缺乏完整的計算機科學的基礎知識體系,如編譯、OS、數據結構、演算法、中間件、設計模式等等,很難去掌握未來的前端工程化趨勢。所以,我個人覺得JS的發展是在逐步的剔除那些不合格的傳統的前端工程師,是前端逐漸分割UI工程師(這才CSS,HTML,jquery)和前端工程師(前端架構、中間間、工程化)兩個工總。


影響就是,一方面在處理ES6的兼容性,另外一方面各種展望ES7


沒太多實際影響,前端的生活不能靠理想,還是要面對現實。可能在自己造輪子的時候更有方向了吧。。。


嗯,在很長的時間裡對前端基本沒啥影響吧。

因為:

1、那些一個個 新特性如果應用到 項目上,很多代碼都要重寫。

2、重寫的同時,還需要去兼容很多不支持ES6的瀏覽器。

於是,乾脆不使用ES6。

至於nodejs ,都已經用上 ES6 了嘛。


ie6:你們說啥?聽不懂


一張圖證明


XP還能再僵十年(#滑稽)


現在用React或AngularJS2, 都應該用ES6了


其實大家都是很早就在用了吧....

標準感覺應該是很早就已經定型了


反正我這邊是早用上了, 兼容性問題用babel 實時編譯。看看老外搞的東西,基本上都是寫的es6


推薦閱讀:

前後端分離,後台返回的數據前端沒法寫,怎麼辦?
div框中的字為什麼不會跟著div框一起浮動?
前端工程師如何準確的判斷自己目前的技術水平?
css能不能實現左邊div固定寬度,右邊div自適應撐滿剩下的寬度?
怎樣理解 CSS :after 偽元素的作用?

TAG:前端開發 | ECMAScript2015 |