2014 年 Chrome 开发者峰会 - Polymer - 当前形势

Polymer 和 Web 组件最近非常热门,但由于这个生态系统发展迅速,开发者通常很难及时了解所有最新变化。

在 Chrome 开发者峰会上,Polymer 团队的工程经理 Matt McNulty 介绍了什么是 Polymer,并概述了 Polymer 1.0 的路线图。

什么是 Polymer?

首先,Polymer 到底是什么?

Polymer 是一个库,可帮助您使用 Web 组件构建元素和应用。Web 组件是一组尖端的新标准,可让开发者使用自己的自定义元素扩展 HTML 词汇。

Polymer 可帮助开发者更快地构建应用

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

Polymer 让 Web 组件更出色

Polymer 通过“糖化”语法,让 Web 组件变得更易于使用。它可以减少您需要编写的样板代码量,并添加了声明式样式,因此创建 Web 组件就像编写 HTML 一样简单。

Polymer 实验

Polymer 最初只是一项实验,目的是看看我们是否可以在所有浏览器中发布 Web 组件标准之前,通过 polyfill 来实现这些标准,并从开发者那里获得反馈。随着越来越多的开发者开始使用 Polymer,它已从仅仅是 polyfill 演变为一个包含众多高效功能(数据绑定、属性更改监视器、自动节点查找等)的实际库。但所有实验都有结果,那么我们的实验结果如何呢?

Polymer 报告卡需要改进

虽然许多开发者表示他们喜欢使用 Polymer 中的 Web 组件来提升表达能力和工作效率,但他们也对性能和整体复杂性表示担忧。

这突出显示了 Polymer 一直以来存在的自然矛盾:既要作为一项实验来推动 Web 平台向前发展,同时又要打造可供开发者依赖的正式版产品。

即将发生的变更

Polymer 团队仔细研究了该库的每个功能,力求打造一个更精简、可用于生产环境且开发者可以放心使用的版本。

图层

Polymer 已重构为一系列层。核心功能快速且精简,而更高级的功能则需要用户选择启用。对于大多数用例,核心功能应该可以满足开发者的需求。

Polymer 已重构为层

简化了数据绑定

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

简化了数据绑定

更精简的 Shadow DOM

Shadow DOM polyfill 是一项令人惊叹的工程成就。它旨在全面且符合规范,这对于全面测试平台基元至关重要,但遗憾的是,它会为 Polymer 未使用的功能引入许多性能瓶颈。

Polymer 的下一版本将采用不同的方法,使用仅填充 Polymer 所需内容的修补程序式层。

模拟 shadowdom 的速度要快得多

现有的 polyfill 将继续用于通用的非 Polymer 网站组件。

迁移到 webcomponents.org

说到 polyfill,它们也将搬到新家。目前,许多开发者对 Polymer 和 Web 组件之间的关系感到困惑。有些人认为必须使用所有 Polymer 才能使用 Web 组件,但实际上,您只需要使用 polyfill。

为更明确地进行区分,我们将移至 webcomponents.org 的 polyfill 现已重命名为 webcomponents.js

polyfill 将迁移到 webcomponents.org

此举旨在帮助其他库作者在不产生任何混淆的情况下充分利用 polyfill。Polymer 团队将继续为 polyfill 做出贡献,但希望通过这项变更,使其成为社区的共享资源。

结果

那么,所有这些变化的结果是什么呢?

速度

在 Chrome 上,Polymer 的速度现在提高了 5 倍,在 Safari 上则提高了 8 倍

Polymer 在 Safari 中的运行速度现在提高到了原来的 8 倍

文件大小

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

Polymer 现在缩小了 87%

路线图

下一个版本中将有一些 API 破坏性更改,以新版本号 (0.8) 标识,但该团队想明确指出,这不是重写。将当前项目从 Polymer 0.5 迁移到 0.8 应该非常简单。

Polymer 团队还制定了一份路线图,以便开发者更清楚地了解即将发布的版本。

Polymer 路线图,第 1 季度发布 Beta 版,第 2 季度发布 1.0 版

0.8 预览版现已作为分支在 GitHub 上发布(不过,该版本仍处于积极开发阶段,并且缺少文档)。0.9 版正式 Beta 版计划于 2015 年第 1 季度发布,1.0 版将于第 2 季度某个时间发布。

实验已结束

随着 Polymer 近期的一系列变更,其背后的团队正在为 Web 组件成为每个开发者堆栈中不可或缺的一部分奠定基础。如果您刚接触 Web 组件,不妨趁现在了解一下这些具有变革性意义的技术,熟悉它们的使用。如果您已经在使用组件(和 Polymer),那么未来前景确实一片光明。请关注 Polymer 博客,了解所有最新动态,并订阅 Polymer 邮寄名单,以便提出问题或发表意见。编程愉快!