Polymer 是通往 Web 元件美好未來的途徑之一。我們希望讓使用者能輕鬆使用及建構自訂元素。過去一年來,團隊努力為不斷演進的規格開發一組 Polyfill。此外,我們還建立了一個便利的 sugaring 程式庫,讓建構網頁元件變得更簡單。最後,我們正在打造一組 UI 和公用程式元素,可在應用程式中重複使用。在 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 屬性自訂
- 使用預設 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 為基礎。
網頁開發即將迎來令人振奮的時刻。與網路平台新增的其他功能不同,構成網頁元件的 API 並非亮眼或面向使用者的功能。純粹是為了提高開發人員的工作效率。四個主要 API 各有用途,但搭配使用時,就能發揮神奇效果!
- Shadow DOM - 樣式和 DOM 封裝
- 自訂元素:定義新的 HTML 元素。為他們提供具有屬性和方法的 API。
- HTML 匯入是 CSS、JS 和 HTML 套件的發布模型。
- 範本:適當的 DOM 範本,用於定義稍後要標記的惰性標記區塊
如要進一步瞭解 API 的基本概念,請前往 webcomponents.org。