Google Polymerで独自タグを使ってみた

近く各ブラウザで実装される予定のWeb Components. これはHTMLで楽にユーザインターフェイスを記述できる仕組み.

HTMLのタグをコンポーネント化することで再利用性,メンテナンス性,開発効率を高める.

例えばヘッダーを作るとき今までだと

<div id="header">
  <ul>
    <li><a href="#"></a></li>
    ....

みたいに書いていたと思うんだけどWeb Componetsを使うと

<my-header></my-header>

みたいな感じで簡単にかける. ただし,このmy-headerは自分で作る必要がある.でも一度作ってしまえば簡単に再利用可能.

さて,このWeb Componentsを構成する要素は主にこんな感じ.

Custom Components

独自タグを定義することができる. 独自タグの名前は通常のタグと区別するため-で区切る.例)my-element

Imports

独自タグはそれぞれhtmlファイルで定義する. 使用するためにはimportする必要がある.

<link rel=“import” href=”” />

Templates

独自タグで使うcssやjsを読み込む.実質的にこれが独自タグの本体.

Shadow DOM

独自タグの内部の複雑な(独自タグの使用者が見る必要が必ずしもない)DOMを隠蔽する.

実際の使い方.

インストール

$bower install —save Polymer/polymer
$bower install —save Polymer/core-elements
$bower install —save Polymer/paper-elements

独自タグを使う

(1)独自タグを作る

<link rel="import" href="bower_components/polymer/polymer.html">
<polymer-element name="my-element">
  <template>
    <span>ShadowDOM</span>
  </template>
  <script>
    Polymer({});
  </script>
</polymer-element>

polymer.htmlは独自タグ作成に必要な様々な機能を提供する. templateタグ内部でDOMを定義する.基本的にこれが独自タグの本体となる. あとPolymer({});は必須なので注意.

(2)index.html

<!DOCTYPE html>
<html>
<head>
  <title>my-element</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
  <script src="bower_components/platform/platform.js"></script>
  <link rel="import" href="my-element.html">
</head>
<body>
  <my-element></my-element>
</body>
</html>

platform.jsは独自タグをサポートしていないブラウザでも独自タグを動作させるためのJavaScript

(3)ブラウザでアクセス 現在のところブラウザは独自タグをサポートしていない.そのためJavaScriptの助けが必要になってくるんだけどそれにはWebサーバが必要. 公式で推奨されているのは

python -m SimpleHTTPServer