Polymer 和 Web 组件最近非常热门,但由于这个生态系统发展迅速,开发者通常很难及时了解所有最新变化。
在 Chrome 开发者峰会上,Polymer 团队的工程经理 Matt McNulty 介绍了什么是 Polymer,并概述了 Polymer 1.0 的路线图。
什么是 Polymer?
首先,Polymer 到底是什么?
Polymer 是一个库,可帮助您使用 Web 组件构建元素和应用。Web 组件是一组尖端的新标准,可让开发者使用自己的自定义元素扩展 HTML 词汇。

由于 Web 组件被设计为浏览器的新基元,这意味着它们非常强大,但也非常底层,并且使用它们需要大量代码。

Polymer 通过“糖化”语法,让 Web 组件变得更易于使用。它可以减少您需要编写的样板代码量,并添加了声明式样式,因此创建 Web 组件就像编写 HTML 一样简单。
Polymer 实验
Polymer 最初只是一项实验,目的是看看我们是否可以在所有浏览器中发布 Web 组件标准之前,通过 polyfill 来实现这些标准,并从开发者那里获得反馈。随着越来越多的开发者开始使用 Polymer,它已从仅仅是 polyfill 演变为一个包含众多高效功能(数据绑定、属性更改监视器、自动节点查找等)的实际库。但所有实验都有结果,那么我们的实验结果如何呢?

虽然许多开发者表示他们喜欢使用 Polymer 中的 Web 组件来提升表达能力和工作效率,但他们也对性能和整体复杂性表示担忧。
这突出显示了 Polymer 一直以来存在的自然矛盾:既要作为一项实验来推动 Web 平台向前发展,同时又要打造可供开发者依赖的正式版产品。
即将发生的变更
Polymer 团队仔细研究了该库的每个功能,力求打造一个更精简、可用于生产环境且开发者可以放心使用的版本。
图层
Polymer 已重构为一系列层。核心功能快速且精简,而更高级的功能则需要用户选择启用。对于大多数用例,核心功能应该可以满足开发者的需求。

简化了数据绑定
Polymer 的数据绑定系统也进行了大幅优化,以提升性能。遵循分层方法,现在必须选择启用双向绑定,默认是单向绑定。此外,已发布的属性类型已明确说明,现在,属性更改会触发事件,以帮助不同库中的元素更轻松地进行通信。

更精简的 Shadow DOM
Shadow DOM polyfill 是一项令人惊叹的工程成就。它旨在全面且符合规范,这对于全面测试平台基元至关重要,但遗憾的是,它会为 Polymer 未使用的功能引入许多性能瓶颈。
Polymer 的下一版本将采用不同的方法,使用仅填充 Polymer 所需内容的修补程序式层。

现有的 polyfill 将继续用于通用的非 Polymer 网站组件。
迁移到 webcomponents.org
说到 polyfill,它们也将搬到新家。目前,许多开发者对 Polymer 和 Web 组件之间的关系感到困惑。有些人认为必须使用所有 Polymer 才能使用 Web 组件,但实际上,您只需要使用 polyfill。
为更明确地进行区分,我们将移至 webcomponents.org 的 polyfill 现已重命名为 webcomponents.js
。

此举旨在帮助其他库作者在不产生任何混淆的情况下充分利用 polyfill。Polymer 团队将继续为 polyfill 做出贡献,但希望通过这项变更,使其成为社区的共享资源。
结果
那么,所有这些变化的结果是什么呢?
速度
在 Chrome 上,Polymer 的速度现在提高了 5 倍,在 Safari 上则提高了 8 倍。

文件大小
文件大小也缩减了 87%,从 123KB 缩减到了 15KB(经过 Gzip 压缩后为 6KB)。

路线图
下一个版本中将有一些 API 破坏性更改,以新版本号 (0.8) 标识,但该团队想明确指出,这不是重写。将当前项目从 Polymer 0.5 迁移到 0.8 应该非常简单。
Polymer 团队还制定了一份路线图,以便开发者更清楚地了解即将发布的版本。

0.8 预览版现已作为分支在 GitHub 上发布(不过,该版本仍处于积极开发阶段,并且缺少文档)。0.9 版正式 Beta 版计划于 2015 年第 1 季度发布,1.0 版将于第 2 季度某个时间发布。
实验已结束
随着 Polymer 近期的一系列变更,其背后的团队正在为 Web 组件成为每个开发者堆栈中不可或缺的一部分奠定基础。如果您刚接触 Web 组件,不妨趁现在了解一下这些具有变革性意义的技术,熟悉它们的使用。如果您已经在使用组件(和 Polymer),那么未来前景确实一片光明。请关注 Polymer 博客,了解所有最新动态,并订阅 Polymer 邮寄名单,以便提出问题或发表意见。编程愉快!