Polymer 2.0版本用Custom Elements API v1替換了v0,棄用了Polymer.dom,并以Shadow DOM取而代之。不過這個升級遷移過程并沒有看起來那么大難度,因為他們推出了一個兼容層,使得用Polymer 1.7+版本編寫的代碼能夠在2.0版本中運行。
Polymer 1.+版本是基于Custom Elements API v0構建的。Custom Elements API v0使用document.registerElement()進行初始化自定義元素,現已被棄用。那么如何在Custom Elements API v1下創建新元素呢?Polymer 2.0版本改用customElements.define()進行創建。API的這個最新版本很快將被所有主流瀏覽器所支持。Chrome 54+已經實現了該API,Safari TP也已在使用,而Edge和Firefox對該API的支持工作也在進行中。(更多關于各瀏覽器對Custom Elements API v1的支持情況可以在這里找到。)與此同時,這個填充代碼(polyfill)可以加強所有瀏覽器對自定義元素的支持。
Polymer 2.0版本的另一個重要改變是使用Shadow DOM v1代替Polymer.dom。有些瀏覽器已運行了Shadow DOM v1,有些則正在開發。shady DOM從Polymer中分離出來作為填充代碼。
在數據系統方面,Polymer 2.0版本推出了許多增強功能:對對象和數組不再進行臟數據檢查(dirty checking),對數組的處理更加簡單,以及對數據變更通知進行分批,等。
為避免這些突破性改變對系統造成損害,Google推出了一個兼容層,使得用Polymer 1.7+版本創建的自定義元素能夠在2.0版本中運行。開發人員只需要“修改現有代碼,使其在內容分布和樣式上符合shadow DOM v1 API的要求,同時適應在更改Custom Elements v1 API時導致的變更”。Polymer還引入了混合元素(hybrid elements)使其與Polymer1.x兼容。將來某一時刻,將有工具自動把Polymer 1.x創建的自定義元素轉換為2.0。
Polymer 2.0版本使用ES6中的類語法(class syntax) 對自定義元素進行定義。Polymer 1.x版本中的工廠方法仍可以通過兼容層進行使用。
開發人員可以使用Polymer 2.0 Preview,但它現在還處于開發過程中,還不能被用于生產環境。Polymer 2.0 GA將于2017第一季度發布。
查看英文原文:Polymer 2.0 Introduces Breaking Changes But the Migration Has Been Smoothed