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 各有用處,但搭配使用時,效果會更加驚人!
- Shadow DOM - 樣式和 DOM 封裝
- 自訂元素:定義新的 HTML 元素。提供含有屬性和方法的 API。
- HTML 匯入是 CSS、JS 和 HTML 套件適用的發布模式。
- 範本:適當的 DOM 範本,用於定義之後要蓋章的靜態標記片段
如要進一步瞭解 API 的基本概念,請造訪 webcomponents.org。