讓我們透過 Polymer 建構一些應用程式!

在過去一年中,Polymer 團隊花費了許多時間教導開發人員如何建立自己的元素。因此,生態系統快速成長,大部分都仰賴 Polymer 的 Core 和 Paper 元素,以及 Mozilla 團隊所建立的 Brick 元素。

隨著開發人員逐漸熟悉如何打造自己的元素,並開始思考建構應用程式,因此產生了一些問題:

  • 您應該如何建構應用程式的 UI?
  • 如何轉換不同狀態?
  • 哪些策略可以提升成效
  • 請問你該如何提供離線體驗?

在 Chrome 開發人員高峰會中,我試著建立小型聯絡人應用程式,分析了自己的建構流程,藉此回答這些問題。問題如下:

結構

將應用程式拆分為可合併及重複使用的模組化元件,是網頁元件的主要用戶群。Polymer 擁有 Polymer (核心*) 與迴紋紙* 等小型元件,可以從 core-Toolpaper-icon-button 等小型元件輕鬆著手...

Polymer 可協助開發人員更快建構應用程式

...並透過構圖的強大功能與任意數量的元素結合,以建立應用程式鷹架。

Polymer 讓網頁元件更安全

建立通用鷹架後,您就可以套用自己的 CSS 樣式,將其轉換成品牌特有的體驗。使用元件實現這個目標的好處,在於您可以同時利用相同的應用程式建構基本功能,打造截然不同的體驗。安排好鷹架後,您就可以繼續思考內容。

core-list 是特別適合處理大量內容的元素。

Polymer 讓網頁元件更安全

core-list 可以連結至資料來源 (基本上是物件陣列),且陣列中的每個項目都會印出範本例項。在範本中,您可以運用 Polymer 的資料繫結系統,快速進行內容連接作業。

轉場

隨著應用程式的多個部分設計與實作,下一項工作就是思考如何實際瀏覽這些區塊。

雖然這仍是實驗性元素,但 core-animated-pages 提供可插入的動畫系統,可用於在應用程式中轉換不同狀態。

您需要改善 Polymer 報告資訊卡

不過,動畫只是遊戲的一半,應用程式必須將這些動畫與路由器結合,才能妥善管理網址。

網頁元件的轉送作業分為命令式和宣告式兩種變種版本。視專案需求而定,將 core-animated-pages 與任一方法結合可能會有效。

命令式路由器 (例如 Flatiron 總監) 可以監聽相符的路徑,然後指示 core-animated-pages 更新所選項目。

您需要改善 Polymer 報告資訊卡

如果需要在路線比對後及下一節轉換完成前稍作作業,這項功能就非常實用。

另一方面,宣告式路由器 (例如 app-router) 可將路徑和 core-animated-pages 合併為單一元素,讓兩者的管理變得更加簡潔。

您需要改善 Polymer 報告資訊卡

如要更精細的控制,可以查看類似更多轉送的程式庫。該程式庫可透過資料繫結與 core-animated-pages 搭配使用,或許還能為您提供這兩種做法的最佳效果。

效能

隨著應用程式的形狀越來越慢,您必須留意效能瓶頸,尤其是與網路相關的任何狀況,因為這通常是行動網路應用程式最慢的部分。

有條件載入 Web 元件 polyfill 是較簡單的效能成功的關鍵。

您需要改善 Polymer 報告資訊卡

如果平台已取得完整支援,沒有理由支付所有費用!在新版 webcomponents.js 存放區的每個版本中,polyfill 也已細分為獨立檔案。當您需要有條件地載入部分 polyfill 時,這個方式就非常實用。

<script>
  if ('import' in document.createElement('link')) {
    // HTML Imports are supported
  } else {
    document.write(
      '<script src=“bower_components/webcomponentsjs/HTMLImports.min.js"><\/script>'
    );
  }
</script>

此外,透過 Sense 等工具執行所有 HTML 匯入項目,也會帶來可觀的網路優勢。

您需要改善 Polymer 報告資訊卡

Sense 會將匯入內容串連為單一套件,大幅減少應用程式發出的 HTTP 要求數量。

離線

不過,光是建構高效能的應用程式,並不能解決使用者的困境,也就是幾乎沒有網路連線,甚至完全沒有網路連線。換句話說,如果您的應用程式無法離線運作,就不是行動應用程式。現在您可以使用高度對齊的應用程式快取來離線資源,但未來,Service Worker 應該很快就會改善離線開發體驗。

Jake Archibald 最近發布了一流的 Service Worker 模式教戰手冊,不過我會協助你快速上手:

安裝 Service Worker 非常簡單。建立 worker.js 檔案,並在應用程式啟動時註冊該檔案。

您需要改善 Polymer 報告資訊卡

請務必在應用程式的根目錄中找到 worker.js,這樣才能攔截來自應用程式任何路徑的要求。

在工作站的安裝處理常式中,我會快取資源 (包括執行應用程式的資料) 的船載。

您需要改善 Polymer 報告資訊卡

如此一來,如果使用者離線存取我的應用程式,就能享有至少一種備用體驗。

繼續!

網頁元件是網路平台的主要功能,而且目前仍在使用中。隨著使用者越來越常使用瀏覽器,我們也要仰賴開發人員社群的協助,找出建構應用程式結構的最佳做法。上述解決方案為我們提供協助,但還有更多值得學習之處。開始打造更優質的應用程式!