Polymer 2.0はCustom Elements API v0をv1に置き換え,Polymer.domを廃止してshadow DOMを代わりに採用しているが,Polymer 1.7以降で開発されたコードを2.0で動作可能にする互換性レイヤの導入により,これらの変更から予想するほどマイグレーションパスは難しくない。
Polymer 1.+は,document.registerElement()
で初期化されるカスタムエレメントであるCustom Elements API v0上に構築されていたが,これはすでに非推奨とされている機能だ。Polymer 2.0ではこれに代えて,Custom Elememts API v1の下に新たなエレメントを生成するcustomElements.define
を使用する。この最新バージョンのAPIは,近いうちにすべてのメジャーなブラウザによってサポートされるようになる。Chrome 54+はすでに実装済みで,Safari TPも備えている上に,EdgeとFirefoxでも開発が開始されているからだ。(実装状況の詳細はこちらから確認できる。) つまりこのpolyfillを使えば,すべてのブラウザにカスタムエレメントのサポートを追加することが可能になるのだ。
もうひとつの大きな変更はPolymer.domが廃止されて,さまざまなブラウザで実装済み,あるいは開発中であるshadow DOM v1に置き換えられたことだ。shadow DOMは,Polymerとは別のpolyfillとして提供される。
データシステム関連でもさまざまな拡張が導入されている。オブジェクトや配列のダーティチェックの廃止,配列処理の簡略化,データ変更通知のバッチ処理,その他だ。
重大な変更によるダメージを回避するため,Googleは互換性レイヤを導入して,Polymer 1.7以降で作成したカスタムエレメントが2.0でも動作するようにしている。開発者に必要なのは,“コンテント配布やスタイル,さらにはCustom Elements v1 APIでの変更に起因して導入された軽微な変更に関して,shadow DOM APIに準拠するように既存のコードを対応させる”ことのみだ。Polymer 1.xとの互換性を持たせるためのハイブリッドエレメントも導入された。将来的には,Polymer 1.xで開発されたカスタムエレメントを2.0に自動変換するツールも提供される予定だ。
Polymer 2.0のカスタムエレメントは, ES6で利用可能なクラス構文を使用して定義される。Polymer 1.xにあったファクトリメソッドは,互換性レイヤ経由で利用可能だ。
開発者向けにPolymer 2.0プレビュー版が公開されているが,開発途上であるため,開発での利用はまだ推奨されない。Polymer 2.0 GAは,2017年第1四半期のいずれかの時期にリリースされる予定だ。
この記事を評価
- 編集者評
- 編集長アクション