Movatterモバイル変換


[0]ホーム

URL:


PPTX, PDF14,371 views

Web Component概要

Web Componentに関する概要スライドです。

Embed presentation

Downloaded 112 times
Web Components概要2012/10/20株式会社シーエー・モバイル Web先端技術フェロー白石俊平(@Shumpei)
自己紹介白石俊平と申します。コミュニティhtml5.org管理人(会員数5000名超)HTML5とか勉強会主催(毎月一回、100名を動員)Google API Expert (HTML5)Microsoft Most Valuable Professional (IE9)Twitter: @Shumpei
今日のアジェンダWeb Componentsとは何か?Web Componentsの構成要素  テンプレート  デコレータ  カスタム要素  Shadow DOMWeb ComponentsはWebをどう変えるか?
Web Componentsとは何か?→WebのUIを「コンポーネント化」するための仕様群である。
Webには、コンポーネント化が必要だ。
メンテナンス性 Webには、コンポーネント    再利用性化が必要だ。           開発効率
Web Components概要Googleによって仕様提案2012/10現在、Google Chromeが一部を実装済み一部の仕様が公式のドラフトとして公開  →一般的に使えるようになるにはまだ時間がかか  りそう
Web Componentsの構成要素Web Componentsを構成する4つの要素  テンプレート       デコレータ  カスタム要素      Shadow DOM
HTMLテンプレート
HTMLテンプレート現在、JavaScriptでUIをいじくる方法は2つある。 文字列テンプレート DOM操作
HTMLテンプレート現在、JavaScriptでUIをいじくる方法は2つある。  文字列テンプレート    DOMを考慮しない    非標準  DOM操作<script id="tmpl1"  type="text/x-handlebars-template">  <div>...</div></script>
HTMLテンプレート現在、JavaScriptでUIをいじくる方法は2つある。  文字列テンプレート  DOM操作    コードが書きにくい    結果が予想しづらいvar div = document.getElementById('...');div.setAttribute('key', 'value');var p = document.createElement('p');p.innerHTML = '...';div.appendChild(p);
HTMLテンプレート現在、JavaScriptでUIをいじくる方法は2つある。 文字列テンプレート   XSSの危険性  HTMLテンプレートで DOM操作        解決!  コードが書きにくい  結果が予想しづらい
HTMLテンプレートの定義方法<template>要素を使用する。   <template>内に、通常通りHTMLを記述する   <template>はレンダリングされない   <body>, <head>に定義 <html> <head>   <template id="t">     <div id="message"></div>   </template> </head> <body></body> </html>
HTMLテンプレートを使用するcontentプロパティから、内部のDOMを取得する。 <template id="t">   <div id="message"></div> </template> var tmplElem = document.getElementById('t'); var tmpl = tmplElem.content.cloneNode(); … elem.appendChild(tmpl);
HTMLテンプレートぶっちゃけ、これだけじゃ全然便利じゃない。デコレータ、カスタム要素で使用される汎用要素と理解すべき。「テンプレートである」というセマンティックを与えることができるのは良い。 今までの<script>要素よりは見通しが良い。 <script type="text/x-handlbars-template"> </script>
デコレータ
CSSの限界を超える CSSの限界とは? DOMを操作することは     できない
<ul> <li>  <i>アイコン</i>  <span>自由人会議</span>  <span>5</span> </li> …</ul>くらいで済みそうなものだけれど・・
デコレータ要素を「デコレーション」するための仕組みHTML内で定義し、CSS内で使用する
デコレータの定義<decorator>要素と<template>要素を使用して定義する。<decorator id="labelDecorator">  <template>    ラベル:  </template></decorator>
デコレータの使用   CSS内で、decoratorプロパティを使って要素に   指定する。    /* 全てのlabel要素が「ラベル:」となる */    label {      decorator: url(#labelDecorator);    }<label for="name">  お名前</label><input id="name">
デコレータの使用   テンプレート内で<content>要素を使用して、要   素内容を挿入する箇所を指定できる。    <decorator id="labelDecorator">      <template>        <!-- ここに、要素内容が挿入される -->        <content></content>:      </template>    </decorator><label for="name">  お名前</label><input id="name">
複数の<content>要素を指定する<content>は複数指定できる。select属性を用いて、要素内容の一部を抜きだして挿入できる。<decorator id="fieldRowDecorator">  <template>    <div>      <!-- ここに、要素内容が挿入される -->      <content select="label"></content>:    </div>    <!-- 残りの要素はここに挿入される -->      <div id="field"><content></content></div>  </template></decorator>
複数の<content>要素を指定する     /* ラベルとフィールドの組み合わせ */     .fieldRow {       decorator: url(#fieldDecorator);     }<div class="fieldRow"><label for="name">  お名前</label><input id="name"></div>
Advanced:デコレータのスタイリングスコープ付きのstyle要素を使用する。<decorator id="fieldRowDecorator">  <template>    <style scoped>...</style>      …  </template></decorator>
Advanced:  デコレータ内のイベント処理    デコレータは、listen()というメソッドを使用してイベント    ハンドラを登録する    デコレータのコードが実行されるのは、ロード時に一度き    り<decorator id="decorator-event-demo">    <script>        function h(event) {            alert(event.target);        }        this.listen(          {selector: "#b", type: "click", handler: h});    </script>    <template>        <content></content>        <button id="b">Bar</button>    </template></decorator>
デコレータあくまで表示目的の機能である。 Shadow DOM(後述)は持たない デコレータで定義されたDOMには、アクセスす る手段がないスタイリング目的の余計なマークアップを劇的に減らすことができるため、非常に強力
カスタム要素
カスタム要素とは?要素を自作できる!!!!
カスタム要素の定義<element>要素を使用するname属性に要素名を指定する  自作要素には「x-」という接頭辞をつけなくては  ならないextends属性に、継承元の要素を指定する  <element name="x-fancybutton"    extends="button">    <template>      <!-- デコレータと同様 -->      …    </template>  </element>
カスタム要素の使用要素にis属性を指定して、カスタム要素の名称を指定する。対象となる要素は、カスタム要素のextendsと一致している必要がある<button is="x-fancybutton">  <span>ボタン</span></button>
Advanced:カスタム要素のインスタンス化カスタム要素は通常の要素と同じく、document.createElement()でインスタンス化できる var e = document.createElement('x-fancybutton');constructor属性で、コンストラクタを生成させることも可能 <element name="x-fancybutton" extends="button"   constructor="FancyButton">...</element> var fancyButton = new FancyButton();
Advanced: カスタム要素のクラス定義コンストラクタのプロトタイプを変更して、要素独自の振る舞いを追加する。<element ... constructor="FancyButton">  <script>    FancyButton.prototype.razzle = ...    // constructor属性を使用しない場合は    // 以下のコードでコンストラクタにアクセス      // var FancyButton =this.generatedConstructor;  </script>  ...</element>
Advanced:カスタム要素のライフサイクルカスタム要素は、以下の様なライフサイクルイベントを捕捉して処理を行える。  created  attributeChanged  inserted  removed<element extends="time" name="x-clock"><script>this.lifecycle({  inserted: function(){ this.startUpdatingClock(); },  removed: function() { this.stopUpdatingClock(); }});</script></element>
Shadow DOM
Shadow DOMとは?開発者の目から隠されたDOMツリー複雑な内部構造を隠蔽し、シンプルなDOMに見せかけることができる(=カプセル化)。
Shadow DOMの実装状況Google ChromeにはShadow DOMが実装されている。標準的な要素の多くが、Shadow DOMで実装されている。  video/audio/textarea/details/input...
Shadow DOMを「見る」chrome://flagsにて、以下のフラグをオンにする。 Shadow DOMを有効にする <style scoped>を有効にする   Shadow DOMを自分で使うためには必要 デベロッパーツールのテストを有効にする   Shadow DOMの内容を開発者ツールで見るために   必要
Shadow DOMを見る標準的な要素が、Shadow DOMによって構築されていることを確認する。
Advanced:Shadow DOMの動作を理解するShadow DOMを使用した要素(Shadow Host)の「内側」には、2つのDOMツリーがある。                                カスタム要素の定義<element name="x-fancybutton"   に含まれるDOMツ  extends="button">             リー。  <template>                                こちらのツリーは開    <content></content>         発者の目に見えない。    <div>...</div>              (Shadow DOM)  </template></element>                                カスタム要素内に入                                れ子にしたDOMツ<button is="x-fancybutton">                                リー。  <span>ボタン</span>                                こちらのツリーは、</button>                                Shadow DOMに取っ                                て代わられる
Advanced:Shadow DOMの動作を理解する二種類のDOMツリー
Advanced:Shadow DOMの動作を理解するShadow DOMに差し替えられる
Advanced:     Shadow DOMの動作を理解する       元のDOMツリーは、<content>要素の位置に挿入       される<element name="x-fancybutton"  extends="button">  <template>    <content></content>         <button is="x-fancybutton">    <div>...</div>                <span>ボタン</span>  </template>                      <div>...</div></element>                      </button><button is="x-fancybutton">  <span>ボタン</span></button>
Advanced: Shadow DOMを使うChrome上では既に、Shadow DOMのAPIが利用可能となっている。WebKitShadowRootを用いて、任意の要素をShadow Hostにすることができる。
Advanced:          Shadow DOMを使う       以下のコードを、Shadow DOM APIを使用して       整形する。<!DOCTYPE html><div id="shadowHost">  もともとあったDOMツリー</div><div id="shadowSubtree">  <style scoped>    #origTree { color: red; }  </style>  <h1>Shadow DOM Subtree</h1>  <div id="origTree">    <content></content>  </div></div>
Advanced:           Shadow DOMを使う// Shadow Hostとなる要素を取得var shadowHost = document.getElementById('shadowHost');// Shadow Hostに変換// この時点で、元のDOMツリーは一旦非表示にvar shadowRoot = new WebKitShadowRoot(shadowHost);// Shadow DOM サブツリーになる要素var shadowSubtree = document.getElementById('shadowSubtree');// Shadow DOM サブツリーとして指定// 表示されるのはこちらの要素になる。// <content>要素の部分に、もとのDOMツリーが表示されるshadowRoot.appendChild(shadowSubtree);
Web ComponentsはWebをどう変えるか?
UIフレームワークの         利用方法が統一$('#list').somelist();<ul data-role="listview">      <ul is="x-somelist"></ul>                          </ul><ul dojoType="x.y.SomeList"></ul>
外部コンポーネントの   読み込みlink要素を用いて、外部コンポーネントを読み込むことができる。  <link rel="components" href="URL">        CDNによるコンポーネント配信な            どが期待できる!
Web UI開発の分業が可能に    コンポーネント利用者         (ロースキル)        HTMLマークアップ        CSSスタイリング    コンポーネント開発者            (ハイスキル) HTML/CSS/JSを駆使したコンポーネント開発             開発標準策定  サードパーティコンポーネントの選定など
よりセマンティックな マークアップに複雑なマークアップをカプセル化することで、よりシンプルでセマンティックなマークアップに。          <textarea            is="x-tweetbox"            placeholder="ツイートする">          </textarea>
WebComponentsには注目!数年後のHTMLマークアップは、今とは全く違うものになっているかも?いつまでも泥臭かったHTMLフロントエンド開発を、洗練されたものに。
ご清聴ありがとうございました。        Follow me @Shumpei

Recommended

PDF
jQuery Mobile 最新情報 & Tips
PDF
Vue Router + Vuex
PDF
jQuery Mobile 1.3 最新情報
PDF
DOM Scripting & jQuery
PPTX
Magento meet up Tokyo#1 for Design
PDF
jQuery Mobile 1.2 最新情報 & Tips
PDF
Vue.js 基礎 + Vue CLI の使い方
PDF
jQuery Mobile 概要
PPTX
Jetpack Library 事始め
PDF
リアルFacebookガジェットを作った(ロングバージョン)
PDF
ADRという考えを取り入れてみて
PDF
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
PDF
jQuery Mobileの基礎
PDF
0406web creators night_DeNA
PDF
Jqm20120210
PDF
jQuery Mobile(開発編)勉強会資料
PDF
20120118 titanium
PDF
SocialWeb Conference vol.5 OpenSocial Night #2
PDF
TumblrTouch
PDF
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
PDF
Twitter連携chrome extension作り方
KEY
Google App Engine for Java
PDF
WordPressとjQuery
PDF
はじめてのVue.js
PPTX
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
PPTX
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
KEY
EC-CUBEプラグイン講義
PDF
React で CSS カプセル化の可能性を考える
PDF
SSL/TLSの基礎と最新動向
PDF
最強オブジェクト指向言語 JavaScript 再入門!

More Related Content

PDF
jQuery Mobile 最新情報 & Tips
PDF
Vue Router + Vuex
PDF
jQuery Mobile 1.3 最新情報
PDF
DOM Scripting & jQuery
PPTX
Magento meet up Tokyo#1 for Design
PDF
jQuery Mobile 1.2 最新情報 & Tips
PDF
Vue.js 基礎 + Vue CLI の使い方
PDF
jQuery Mobile 概要
jQuery Mobile 最新情報 & Tips
Vue Router + Vuex
jQuery Mobile 1.3 最新情報
DOM Scripting & jQuery
Magento meet up Tokyo#1 for Design
jQuery Mobile 1.2 最新情報 & Tips
Vue.js 基礎 + Vue CLI の使い方
jQuery Mobile 概要

What's hot

PPTX
Jetpack Library 事始め
PDF
リアルFacebookガジェットを作った(ロングバージョン)
PDF
ADRという考えを取り入れてみて
PDF
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
PDF
jQuery Mobileの基礎
PDF
0406web creators night_DeNA
PDF
Jqm20120210
PDF
jQuery Mobile(開発編)勉強会資料
PDF
20120118 titanium
PDF
SocialWeb Conference vol.5 OpenSocial Night #2
PDF
TumblrTouch
PDF
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
PDF
Twitter連携chrome extension作り方
KEY
Google App Engine for Java
PDF
WordPressとjQuery
PDF
はじめてのVue.js
PPTX
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
PPTX
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
Jetpack Library 事始め
リアルFacebookガジェットを作った(ロングバージョン)
ADRという考えを取り入れてみて
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
jQuery Mobileの基礎
0406web creators night_DeNA
Jqm20120210
jQuery Mobile(開発編)勉強会資料
20120118 titanium
SocialWeb Conference vol.5 OpenSocial Night #2
TumblrTouch
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Twitter連携chrome extension作り方
Google App Engine for Java
WordPressとjQuery
はじめてのVue.js
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる

Viewers also liked

KEY
EC-CUBEプラグイン講義
PDF
React で CSS カプセル化の可能性を考える
PDF
SSL/TLSの基礎と最新動向
PDF
最強オブジェクト指向言語 JavaScript 再入門!
PDF
ECMAScript没proposal追悼式
PDF
Bitcoinを技術的に理解する
PDF
C++の話(本当にあった怖い話)
PDF
You Don't Know ES Modules
PDF
Node-v0.12のTLSを256倍使いこなす方法
PDF
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
PPTX
Fork/Join Framework
PDF
バグハンターの哀しみ
PPTX
Webコンポーネントの話
PDF
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
PDF
Node-v0.12の新機能について
PDF
ES6 in Practice
PDF
スマホデザインパターン なう
PDF
PyPy 紹介
PPTX
自転車のVRシステムがあったら欲しいですか?
EC-CUBEプラグイン講義
React で CSS カプセル化の可能性を考える
SSL/TLSの基礎と最新動向
最強オブジェクト指向言語 JavaScript 再入門!
ECMAScript没proposal追悼式
Bitcoinを技術的に理解する
C++の話(本当にあった怖い話)
You Don't Know ES Modules
Node-v0.12のTLSを256倍使いこなす方法
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
Fork/Join Framework
バグハンターの哀しみ
Webコンポーネントの話
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Node-v0.12の新機能について
ES6 in Practice
スマホデザインパターン なう
PyPy 紹介
自転車のVRシステムがあったら欲しいですか?

Similar to Web Component概要

PDF
jQuery Performance Tips – jQueryにおける高速化 -
PDF
jQueryでiTunes Store風スライドショーを作ってみる
PDF
jQuery Mobileカスタマイズ自由自在 v1.2
PDF
第一回Miim勉強会
PPTX
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
PDF
WebComponentsとPolymerを使ってみた
PDF
Firefox OSアプリ 「ModeView」
PDF
CSS Design and Programming
PDF
⑯jQueryをおぼえよう!その2
PPTX
J qmobiはjqueryから軽量化しているか
PDF
WordBench Kobe jQueryどうでしょう
PDF
⑳CSSでアニメーション!その1
PPTX
Web Components概要 2013/4/20 エフスタ!版
PDF
㉑CSSでアニメーション!その2
PDF
Objective Front-End JavaScript
PDF
㉘HTML5+CSS3でアニメーション!
PDF
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
PDF
今度こそ始めるjQuery超入門
PDF
JavaScript Basic 02 jQuery
PDF
JavaScript04 jquery プラグインを使おう
jQuery Performance Tips – jQueryにおける高速化 -
jQueryでiTunes Store風スライドショーを作ってみる
jQuery Mobileカスタマイズ自由自在 v1.2
第一回Miim勉強会
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
WebComponentsとPolymerを使ってみた
Firefox OSアプリ 「ModeView」
CSS Design and Programming
⑯jQueryをおぼえよう!その2
J qmobiはjqueryから軽量化しているか
WordBench Kobe jQueryどうでしょう
⑳CSSでアニメーション!その1
Web Components概要 2013/4/20 エフスタ!版
㉑CSSでアニメーション!その2
Objective Front-End JavaScript
㉘HTML5+CSS3でアニメーション!
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
今度こそ始めるjQuery超入門
JavaScript Basic 02 jQuery
JavaScript04 jquery プラグインを使おう

More from Shumpei Shiraishi

PPTX
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
PPTX
JavaScript使いのためのTypeScript実践入門
PPTX
コンセプトのつくりかた - アイデアをかたちにする技術
PDF
WebRTCがビデオ会議市場に与えるインパクトを探る
PDF
俺的GEB概論(前半)
PPTX
秒速一億円
PPTX
「1秒でわかる!アパレル業界ハンドブック」を読んで
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
PPTX
HTML5時代のフロントエンド開発入門
PPTX
Angular2実践入門
PPTX
6,000人のWeb技術者コミュニティを5年間やってみて学んだこと
PPTX
HTML5がもたらすアプリ開発へのインパクト
PPTX
この人と結婚していいの?を読んで
PPTX
「それでも人生にイエスと言う」を読んで
PPTX
「それでも人生にイエスと言う」を読んで
PPTX
漫☆画太郎論
PDF
変身×フランツ・カフカ
PPTX
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んで
PPT
20130921レジュメ2
PPTX
はじめにことばありき
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
JavaScript使いのためのTypeScript実践入門
コンセプトのつくりかた - アイデアをかたちにする技術
WebRTCがビデオ会議市場に与えるインパクトを探る
俺的GEB概論(前半)
秒速一億円
「1秒でわかる!アパレル業界ハンドブック」を読んで
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
HTML5時代のフロントエンド開発入門
Angular2実践入門
6,000人のWeb技術者コミュニティを5年間やってみて学んだこと
HTML5がもたらすアプリ開発へのインパクト
この人と結婚していいの?を読んで
「それでも人生にイエスと言う」を読んで
「それでも人生にイエスと言う」を読んで
漫☆画太郎論
変身×フランツ・カフカ
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んで
20130921レジュメ2
はじめにことばありき

Web Component概要


[8]ページ先頭

©2009-2025 Movatter.jp