关于 Polymer 项目

我们是谁

Polymer 项目是由谷歌 Chrome 组织内的前端开发团队领导的一个开源项目。

我们的使命

我们的使命是通过帮助开发人员释放 Web 平台的全部潜力,激发 Web 平台的发展和完善,为用户和开发人员提供更好的生活。

为追求这一使命,我们开发出库、工具和模式,以帮助开发人员构建现代化的渐进式 Web App,充分利用 Web 组件服务工作者HTTP/2 等尖端平台功能。

我们还与 Chrome 开发团队的同事紧密合作,确定痛点,将新的平台功能用于实测,并尽力确保前端开发人员在平台发展中拥有强有力的话语权。

我们的座右铭,反映了我们独特的使命,是 #UseThePlatform。对我们来说这一点值得解释几句。

为什么 #UseThePlatform?

tl;dr: 我们相信,拥抱现代 Web 平台是向用户和开发人员提供他们应得的东西的最佳方式。

用户需要快速启动的 App,可以立即响应,并可在任何网络条件下随时随地从各种类型和大小的设备上进行访问。

开发人员应该得到一个可以与之合作的平台,而非围着它打转——一个易于构建,分发和维护这些普遍可访问,可靠,令人愉快的高性能 App 的平台。

但是,我们并不总是从 Web 上得到我们应得的,尤其是在移动领域。

  • 从用户的角度来看,太多的移动 Web App 启动缓慢,与本地 App 相比表现不佳,并且在网络条件差的情况下根本不工作。

  • 对于 App 开发人员来说,Web 平台进展缓慢。多年来,我们不得不在平台上插入洞孔,并在其上构建层,以满足基本需求,如定义组件和加载模块。

给予应得荣誉

我们为弥补 Web 平台缺陷而建立的库,工具和框架,证明了 Web 的基本可扩展性以及 Web 社区不断创新的精神。

这些创新在 Web 从内容平台到支持功能强大,功能丰富的应用的平台变迁时发挥了重要作用。毫无疑问,我们在“用户空间”中的集体努力将继续清扫和照亮前进的道路。

也就是说,我们已在平台本身以外和之上做得太多,有实际的代价需要支付——开发者和用户都需要支付的代价。

开发者的代价

开发者的代价来自于形式的复杂性和被锁定。

随着时间的推移,我们建立在平台之上的堆栈已经将 Web 开发从一个查看源代码 - Shift 刷新的循环,一步一步地推到了一个每个项目开始时都要面对着一个选择的绝海的境地。

当我们依靠库和框架来满足我们甚至是最基本的需求时,我们最终会编写依赖于有倾向性的抽象而不是通用平台原语的代码。因为从一个抽象迁移到另一个抽象是昂贵的,这些依赖关系限制了我们未来的选择,并使我们的代码维护成本更高。

用户的代价

更重要的是,当我们在平台上方构建的层变得太厚时,用户会付出性能损失。

我们通过网线发送的每行代码的字节都会消耗可用于内容和数据的带宽,我们花费在客户端上执行 JavaScript 的每个时钟周期都会降低我们的 App 的响应速度。在移动 Web 的远端尤其如此,其中连接不良和动力不足的设备是常态。

我们今天使用的许多开发模式源自一个我们大多从桌面使用 Web 的时代。现在的 Web 是移动优先的,我们需要重新考虑这些模式。给予我们的用户在超受限的移动环境中他们应得的体验,意味着大大降低带宽和执行成本,重度地依赖于平台,并将有限的预算节省用于那些只有我们的应用能提供的东西。

例如,浏览器专门负责加载资源,解析 HTML 和 CSS 等 Web 专属的格式,并以最高的效率进行缓存。类似地,浏览器具有高度优化的本机代码,用于实例化元素,将其插入到 DOM 中,更新其属物和属性,管理它们之间的事件流程,并最终将它们销毁。

当我们编写自己的代码来做这些事情时,通过网络发送该代码并在客户端执行,我们正在做我们不应该做的工作; 在某些情况下,我们也会使当前和未来的浏览器端优化失效。

以平台为中心的前行之路

由于新的 Web 平台原语,现在平台本身就可以满足我们提出的在平台之上和围绕平台来进行构建的许多需求:

  • Web 组件让我们可以扩展浏览器的内置组件模型(DOM),而不是自己创建。

  • 结合 HTTP/2 和服务器推,标准模块格式如 HTML 导入ES6 模块 允许我们声明细粒度的依赖关系,并以最佳可缓存的形式有效地将它们提供给客户端,而无需依赖复杂的打包工具和装载程序。

  • 服务工作者让我们可以构建纯 Web App,用户即使设备离线或网络状况差,也可以访问;而以前我们可能不得不诉诸手动安装的原生或“混合” App。

我们相信,在下一个时代,表现最好的 App 将是充分利用这些现代 Web 平台功能的 App,让浏览器尽可能地担负重任。同样,成本最低,面向未来的 App 将是那些尽可能在平台原语上构建的 App,能够最大限度地提高互操作性并减少迁移成本。

重新思考库和框架

使用平台并不意味着丢弃现有的库和框架; 这意味着使其更轻,并设计它们来补充平台本身的能力。

当库和框架表现最好的时候,使我们的工作变得更容易。它们为困难问题提供现成的解决方案; 广泛适用的抽象,挽救我们于重复造轮子; 还有有用的模式和约束,帮助我们聪明地构建我们的 App,并避免射到自己的脚。

现在的挑战是要得到这些好处,同时最大限度地减少我们的解决方案的重量,并充分利用平台提供的功能。

在这个问题空间里,一如既往地有很多创新和选择的余地。就我们而言,我们的目标是将平台视为框架,以轻量级,可选的给平台 API “加糖”的形式增加价值; 松散耦合,可互操作的模块; 以及从较小的构建块组成组件和应用的有效模式。

我们的角色

回到我们的使命,这是我们如何看待我们的角色:

  • 强烈倡导以平台为中心的方式来构建现代 Web App

  • 构建库和工具,以支持 App 开发人员采用以平台为中心的方法

  • 在这样做时,探索并举例说明设计以平台为中心的库和工具的最佳实践

  • 根据我们自己的经验和更广泛的社区的经验,继续影响 Chrome 组织内平台的演进

我们相信我们致力于的模式,库和工具是有益的,我们很高兴看到它们被广泛采用。

但是,我们的 #UseThePlatform 运动的最终目的不是为了让人们使用 Polymer 项目构建的东西。这是关于推广对 Web 平台的使用,来提供尽可能最好的 App,并帮助确保 Web 用户和开发人员在未来能从平台获得他们应得的一切。