Google I/O で紹介されていた Polymer という JavaScript で少し遊びました。
Web Components という Web の UI を コンポーネント化するための仕組みがあります。 これをラップして 使いやすくしてくれる Polymer です。
rake preview
でウェブサーバが起動するので http://localhost:4000
でアクセスできるようにしています。
ポイントは
- カスタムタグが作れる
- 属性でコンポーネントに情報を渡せる
- コンポーネントは独立した HTML ファイル
- linkタグ で読み込む コンポーネントを指定できる
- Web Components に比べて記述良が少ない
といっところでしょうか。
index.html は下記のようになっています。
<!DOCTYPE html>
<html>
<head>
<script src="polymer.min.js"></script>
<link rel="import" href="my-element.html">
</head>
<body>
<my-element hoge="goro"></my-element>
<my-element hoge="mogu"></my-element>
</body>
</html>
- Polymer を読み込んで
- my-element という コンポーネントを読み込んで
- my-element タグ で利用している
という流れです。
- hoge属性で my-element コンポーネントのボタンのラベルを変更しています。
my-element.html は下記のようになっています。
<element name="my-element" attributes="hoge">
<template>
<div>
<span>I'm <b>tk-element</b>. This is my Shadow DOM.</span>
<button on-click="delete">{{ hoge }}</button>
</div>
</template>
<script>
Polymer.register(this,
{
"delete": function () { alert(this.hoge) },
}
);
</script>
</element>
いくつか特殊なタグがあります。
element, template です。
- element の name属性に 作成するタグの名前を書く
- element の attributes属性に 外部から受け取る情報を登録する
- hoge という属性でやりとりすることを書いています
- template の中にHTMLをかきます。
- 波括弧を使うことで 変数の中身を取り出せます
- ロジック は Polymer.register を利用して登録します
非常にモジュラリティが高いので、HTMLが見やすくなりそうです。