在最近结束的 Google IO 2015,Google 发布了期待已久的 Polymer 1.0,并宣布可用于生产环境,使用 Polymer 库的人们还在使用开发预览版,本文将做为一个指南,指导将现在应用迁移到 Polymer最新版本。 关于 v1.0 一些重要的注意事项:
安装最新版本 Polymer 的步骤与这篇文章中的完全相同,如果想升级已安装的 Polymer,定位到 Polymer 的目录并在终端中运行下面的命令:
要知道非常重要的一点,这个操作会破坏现有的 Polymer 应用,就像之前提到的,两个不同版本的 Polymer 是互不兼容的。因此,建议在一个单独的目录下安装全新的 Polymer。为解释自 v0.5 版本以来的变化,我们引用我之前写在 SitePoint 上的文章里关于信用卡图表自定义元素的例子来展示两个版本间的不同。 Polyfilling 不支持浏览器新版本的 Polymer 不再需要包含在 webcomponents.js 库里面的 shadow DOM 的 polyfill,取而代之的是使用一个更小的叫 webcomponents-lite.js 的库来 polyfill 旧的浏览器。 0.5版本:
1.0版本
这个"轻量级"的版本较之前的内容增加大约 80kb,当遇到性能瓶颈的时候这些改变将变得非常有意义。 定义自定义元素
0.5版本:
1.0版本:
注册自定义元素 在此之前,我们可以通过简单的调用 0.5版本:
1.0版本:
自定义元素属性任何属于<polymer-element>标签的现在都应该根据数据类型定义为 properties 对象。 版本0.5:
版本1.0:
自定义元素样式现在元素样式定义在<template>标签外边。 版本0.5:
版本1.0:
外部样式表支持使用 HTML Imports。 数据绑定Polymer 1.0 版本提供了二种类型的数据绑定:
在这个 release 版本中,绑定必须替换一个结点的所有文本内容,或者某个属性的所有值。所以是不支持字符串连结操作的。对于属性值,建议使用计算绑定来代替字符串连结。 版本0.5:
版本1.0:
注意一个结点中绑定标示两侧不能包含任意空白符。 新的 shady DOMPolymer v0.5 使用 shadow DOM 给开发人员提供一个更简单的元素接口,并通过隐藏子树后面的影子根来抽象复杂性。这是最基本形式的封装,它工作在浏览器中并提供 shadow DOM。 对于浏览器来说,它是不能提供 shadow DOM 的,像本地 shadow DOM 那样实现一个多边形填充是困难的,通常这会比本地实现慢,还会需要更多的代码。正是这些原因, Polymer 团队决定拿走 shadow DOM 填充,并用本地 DOM,用较轻版本构建来支持更小的 shadow DOM。 要注意的是 shady DOM 和 shadow DOM 是相互兼容的,这意味着 shady DOM 的 API 使用浏览器中有效的本地的shadow DOM,而在不支持的浏览器中就会回到 shady DOM。 总结把你的应用升级到 Polymer v1.0 可能是一个痛苦缓慢过程,这取决于你的应用灵活性,但是这种升级会在更快的加载时间和更小的负载方面带来巨大的好处。官方迁移向导是有效的,在 Polymer 项目网站上涵盖了一大堆对内部 API 的改变,这些变更的层次很深,因此需要仔细检查。 另外,Chuck Horton 已经建立了一个 Github 仓库,叫做 Road to Polymer 1.0,它提供了一个代码转换工具让你的代码从 v0.5 升级到 v1.0。如果你不想手动做一些更好的改变,它可以帮助你的代码迁移。 |