Chrome 開發人員高峰會 - Polymer 宣告式、封裝、可重複使用的元件

Polymer 是進入 Web 元件精彩未來的入口,我們希望讓使用者輕鬆建構及使用自訂元素。過去一年,團隊一直致力於開發一組 polyfill,以因應不斷變更的規格。此外,我們也建立了方便使用的糖衣程式庫,讓您更輕鬆地建構網頁元件。最後,我們將製作一組 UI 和公用元素,供您在應用程式中重複使用。在 2013 年 Chrome 開發人員大會上,我深入探討了 Polymer 的不同部分,以及「Everything is an element」這句格言背後的理念。

簡報http://html5-demos.appspot.com/static/cds2013/index.html

「Everything is an element」(從 <select> 到自訂元素)

簡報http://html5-demos.appspot.com/static/cds2013/index.html#6

1990 年代的網頁建構方式雖然受限,但功能強大。我們只有幾個元素可供使用。最強大的部分是一切都是宣告式的。不必編寫大量 JavaScript 程式碼,就能輕鬆建立網頁、新增表單控制項,並建立「應用程式」。

<select> 元素為例。只要宣告元素,就能使用許多內建功能:

  • 可透過 HTML 屬性自訂
  • 使用預設 UI 算繪子項 (例如 <option>),但可透過屬性進行設定。
  • <form> 等其他情境中非常實用
  • 具有 DOM API:屬性和方法
  • 在發生有趣事件時觸發事件

網頁元件提供的工具可讓您重溫網頁開發的黃金時期。我們可以建立新的元素,讓人聯想到 <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 為基礎的單體網頁應用程式,而是建立可重複使用的元素。隨著時間推移,整個應用程式會從組合較小的元素而生。甚至整個應用程式都可以是元素:

<my-app></my-app>

使用 Polymer 的特殊醬料建構網路元件

簡報http://html5-demos.appspot.com/static/cds2013/index.html#37

Polymer 包含多項便利功能,可用來建構以網路元件為基礎的應用程式:

  • 宣告式元素註冊:<polymer-element>
  • 宣告式繼承:<polymer-element extends="...">
  • 宣告式雙向資料繫結:<input id="input" value="">
  • 宣告式事件處理常式:<button on-click=""
  • 已發布的資源:xFoo.bar = 5 <-> <x-foo bar="5">
  • 屬性觀察:barChanged: function() {...}
  • 預設為 PointerEvents / PointerGestures

這個故事的寓意是,撰寫 Polymer 元素時,應以宣告式為主。程式碼越少越好 ;)

網頁元件:網頁開發的未來

簡報http://html5-demos.appspot.com/static/cds2013/index.html#26

我會不負責任地宣傳網頁元件背後的標準。畢竟 Polymer 是以這些不斷演進的基礎 API 為基礎。

網頁開發正處於令人振奮的關鍵時刻。與其他新增至網頁平台的新功能不同,構成 Web 元件的 API 並非亮眼或面向使用者的功能。這些功能純粹是為了提升開發人員的工作效率。四個主要 API 各有用處,但搭配使用時,效果會更加驚人!

  1. Shadow DOM - 樣式和 DOM 封裝
  2. 自訂元素:定義新的 HTML 元素。提供含有屬性和方法的 API。
  3. HTML 匯入是 CSS、JS 和 HTML 套件適用的發布模式。
  4. 範本:適當的 DOM 範本,用於定義之後要蓋章的靜態標記片段

如要進一步瞭解 API 的基本概念,請造訪 webcomponents.org。