Chrome 开发者峰会 - Polymer 的声明式、封装式可重复使用组件

Polymer 是通往 Web 组件美好未来的途径之一。我们希望让您能够轻松使用和构建自定义元素。在过去一年里,该团队一直在努力为不断演变的规范开发一组 polyfill。此外,我们还创建了一个方便的糖衣库,以便更轻松地构建 Web 组件。最后,我们将制作一组可在应用中重复使用的界面和实用元素。在 2013 年 Chrome 开发者峰会上,我深入探讨了 Polymer 的不同部分,以及“一切皆为元素”口号背后的理念。

幻灯片http://html5-demos.appspot.com/static/cds2013/index.html

“一切皆为元素”(从 <select> 到自定义元素)

幻灯片http://html5-demos.appspot.com/static/cds2013/index.html#6

在 1990 年代构建网页虽然受到限制,但功能强大。我们只有几个元素可用。最强大的部分是什么?...所有内容都是声明式的。创建网页、添加表单控件和创建“应用”非常简单,无需编写大量 JavaScript 代码。

以简单的 <select> 元素为例。该元素内置了大量功能,只需声明即可使用:

  • 可通过 HTML 属性进行自定义
  • 使用默认界面渲染子项(例如 <option>),但可通过属性进行配置。
  • <form> 等其他上下文中很有用
  • 具有 DOM API:属性和方法
  • 在发生有趣的事情时触发事件

Web 组件提供了重返 Web 开发鼎盛时期的工具。我们可以创建类似 <select> 的新元素,但这些元素的设计适用于 2014 年的用例。例如,如果 AJAX 是今天发明的,它可能就是一个 HTML 标记(示例):

<polymer-ajax url="http://gdata.youtube.com/feeds/api/videos/"
                params='{"alt":"json"}'></polymer-ajax>

或者,将数据绑定到 queryMatches 属性的响应式元素

<polymer-media-query query="max-width:640px" queryMatches="">

这正是我们在 Polymer 中采用的方法。我们将创建可重复使用的元素,而不是构建基于 JavaScript 的单体式 Web 应用。随着时间的推移,整个应用会通过组合较小的元素而逐渐发展壮大。整个应用都可以是元素:

<my-app></my-app>

使用 Polymer 的特殊酱汁构建 Web 组件

幻灯片http://html5-demos.appspot.com/static/cds2013/index.html#37

Polymer 包含多种便捷功能,可用于构建基于 Web 组件的应用:

  • 声明式元素注册:<polymer-element>
  • 声明式继承:<polymer-element extends="...">
  • 声明式双向数据绑定:<input id="input" value="">
  • 声明式事件处理脚本:<button on-click=""
  • 已发布的媒体资源:xFoo.bar = 5 <-> <x-foo bar="5">
  • 媒体资源观察:barChanged: function() {...}
  • 默认情况下使用 PointerEvents / PointerGestures

故事的寓意是,编写 Polymer 元素时,要注意采用声明式方式。编写的代码越少越好 ;)

Web 组件:Web 开发的未来

幻灯片http://html5-demos.appspot.com/static/cds2013/index.html#26

我必须提一下 Web Components 背后的标准。毕竟,Polymer 基于这些不断演变的基础 API。

网络开发正迎来一个非常令人振奋的时刻。与添加到 Web 平台的其他新功能不同,构成 Web 组件的 API 并不华丽,也不面向用户。它们纯粹是为了提高开发者效率。这四个主要 API 各有用途,但结合使用时,会产生奇妙的效果!

  1. Shadow DOM - 样式和 DOM 封装
  2. 自定义元素 - 定义新的 HTML 元素。为他们提供一个包含属性和方法的 API。
  3. HTML 导入是 CSS、JS 和 HTML 软件包的分发模式。
  4. 模板 - 适当的 DOM 模板,用于定义要稍后盖章的惰性标记块

如需详细了解这些 API 的基础知识,请访问 webcomponents.org。