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
感谢薛命灯对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。