《探索ES6》書評與作者采訪

jopen 9年前發布 | 22K 次閱讀 ES6
 

由Axel Rauschmayer編著的 《探索 ES6 是對JavaScript最新特性的一次深入探討,本文包含了對作者所進行的一次簡短的訪談內容。

Axel Rauschmayer博士 的著作 《探索ES6:升級至JavaScript的下一個版本》 (Exploring ES6: Upgrade to the next version of JavaScript)是ECMAScript 2015中新引入特性的一份全面指南,讀者還可以參考配套的 代碼示例 。作者假設讀者已經熟悉JavaScript的特性,或是能夠通過閱讀他的另一本著作 《Speaking JavaScript》 很快地上手,后者對于ES5及之前的語言特性進行了深入的講解。

《探索ES6 一書首先對于JavaScript的歷史進行了簡單的回顧,包括它的版本變遷、標準化組織、設計過程、以及這門語言當下的目標:讓JavaScript成為一門更優秀的語言、具有更強的互操作性,同時又保持對之前版本的兼容。作者注意到了這一點:ECMA組織最終決定讓JavaScript保持完整的向后兼容性,以避免“破壞web”,他們要求與之相關者保持繼續運行舊版本的代碼的能力,并保證新引入的特性不會與之前的代碼產生沖突。本書接下來的部分著重強調了將ES6代碼轉譯(即編譯)為ES5代碼的一系列重要工具,包括包管理、模塊管理、lint工具、shim、polyfill、解析器和REPL等等。

在關于一致性方面的介紹之后,Rauschmayer開始進入ES6的新特性,他首先對這些新特性進行了簡短的描述,并列舉了示例代碼,然后對它們進行了深入的探討。在某些地方也會解釋一下為什么ECMA會決定以這種方式設計這門語言。其中的某些特性,例如類與模塊已經由各種類庫提供了對應的功能,但其它的一些特性都是全新的,包括promise、生成器(generator)或代理(proxy)。以下是作者在本書中所涵蓋的一些特性(尚有部分內容并未列舉在下表中):

  • 數據 :數值、Math方法、新的string方法、模板字符串、符號(symbol)、范圍(scoping)、解構(destructuring)
  • 模塊化: 箭頭函數(arrow function)、類、模塊
  • 集合: 新的數組特性、Map、Set、生成器
  • 其它特性: 異步編程、Unicode、代理

本書的末尾部分提供了大量的 代碼風格提示 :例如何時使用常量、let或箭頭函數,避免混用默認導出(export)與命名導出、格式化生成器、以及推薦使用類等等。

我們對作者進行了一次采訪,以了解他在相關主題方面的看法。

InfoQ ES5如今已經在主流的JavaScript平臺上得到了完整的實現,但目前還沒有任何平臺能夠完整地實現所有的ES6特性,并且在每個平臺上已實現的特性可能各不相同。如果說還沒有一個特性已經得到所有主流平臺的支持,web開發者們又該如何編寫ES6代碼呢?你對此有什么建議?

AR 首個完全支持ECMAScript 6的JavaScript引擎恐怕要到2016年才會出現,在那之前,唯一合理的方式就是將ES6編譯為ES5再部署編譯后的代碼。等到了2016年之后,你就可以檢查一下每個引擎的情況,看它是否已經支持了ES6(或者只檢查一下你所使用的那部分特性)。對于已經支持的特性,可以在代碼中加載原生的版本,否則依然要使用編譯后的ES5版本。

InfoQ 根據之前ES5的采用情況來看,你認為主流瀏覽器大概需要多久才能夠完整地實現ES6?是一年、兩年還是五年?

AR 這一點真的很難說,因為我不清楚微軟與蘋果公司的日程計劃。在 status.modern.ie 網站上,微軟仍然將某些核心特性列為“考慮中”,而蘋果則依然保持一貫的神秘感。但Mozilla與Google在這方面進展良好,大概在2015年末或2016年初就會完全支持ES6了。

InfoQ 你對于One JavaScript這種思想有什么看法?對于web的發展來說,這種方式是否比強制版本化的做法更好?至少后者承諾能夠帶來更整潔的語言。

AR David Herman將ES6避免版本化問題的做法稱為“One JavaScript”。大體上說,它表示ES6是ES5的一個超集,也就是說ES6是100%向后兼容的,這也避免了將JavaScript分割為 ES5(及更早版本)和ES6(及之后的版本)兩個陣營。這種方式保持了JavaScript引擎的簡單性,將ES5代碼庫遷移到ES6也變得十分簡單,因為它其實就是ES6的一個有效子集。One JavaScript方式唯一的缺點就是限制了你對這門語言進行清理的機會:你永遠無法移除特性,只能添加新的特性。

InfoQ 有沒有哪些特性是你希望出現,卻尚未包括在ES6中的,或者說有哪些特性是你希望以另一種方式進行標準化的呢?

AR ES6本身已經非常豐富了。雖然我可能會稍微改變一下類的實現,但能夠在ES6中看到它已經很欣慰了。從長遠一點的觀點來看,我希望看到特質(trait)(或mixin)的出現,并希望標準庫中的內容能夠更豐富一些(尤其是關于迭代操作的工具方法)。

InfoQ 本書中的某些章節還沒有完成,你是否已計劃好它們的完成時間了呢?

AR:我已經完成了我認為最重要的所有章節,我會盡量在接下來幾個月中完成剩余的章節。

《探索ES6》的在線版本 包括免費的HTML版本,以及對應某個推薦價格的PDF、ePub或MOBI格式的電子書。

ES6剛剛由ECMA國際投票通過,可以在 《ECMAScript 2015正式發布》 這篇帖子中找到關于此事的更多細節。

查看英文原文: Exploring ES6: Book Introduction and Author Interview

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!