Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Web Componentsの今 FukuokaJS『三大フレームワーク + WebComponents』 / Feb 26th, 2019 ponday (@ponday_dev)
Slide 2
Slide 2 text
Profile - ponday (Honda, Yusuke) - 株式会社ベガコーポレーション - Like : TypeScript / Elixir / Python etc… - 副業もやってます
Slide 3
Slide 3 text
ここの話
Slide 4
Slide 4 text
今日の内容 - Web Componentsとは? - Web Componentsの良いところ/つらいところ - Web Components向けのライブラリ - JSフレームワークとWeb Components
Slide 5
Slide 5 text
Web Components
Slide 6
Slide 6 text
Web Components - Web標準の技術で、再利用可能な部品を作るAPI - いくつかの仕様の総称 - Custom Elements - Shadow DOM - ES Modules - すでにEdge以外のブラウザで対応済!
Slide 7
Slide 7 text
Custom Elements - 独自のHTML要素を定義できるAPI - customElements.define - class構文を使う - いわゆるコンポーネント機能
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
Shadow DOM - グローバルから独立したDOMツリー - CSSやJSの影響範囲が限定できる - Scoped CSSなどが実現できる - Shadow DOMの中のCSSは外部に影響を与えない - Shadow DOMの中のCSSは外部の影響を受けない
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
これまで Component Component Component State Management Routing State Management Routing State Management Routing DOM API
Slide 12
Slide 12 text
これまでのWeb開発 - コンポーネント機構は各フレームワークが提供 - DOM APIにはコンポーネント機構がない - 各フレームワークが頑張ってコンポーネントを実現していた - Scoped CSSなどのカプセル化の仕組みも同様 - フレームワークに依存するコンポーネント - 当然、フレームワーク間の互換性はない - UIライブラリはフレームワークごとに必要
Slide 13
Slide 13 text
これから DOM API Component Component Component State Management Routing State Management Routing State Management Routing Web Components
Slide 14
Slide 14 text
これからのWeb開発 - DOM APIもコンポーネント機構を持つ - カプセル化の仕組みも備える - コンポーネント機構の新しい選択肢 - 特定の技術に依存しないコンポーネント - フレームワークなどに依存しない - 真の意味で汎用的な部品の実現
Slide 15
Slide 15 text
Web Componentsの良いところ - Web標準の技術であること - ブラウザネイティブなサポート - 複雑なビルド設定は不要 - 他のフレームワークとの共存も簡単 - 導入が非常に簡単 - Web標準の技術だからこそ - 外部からの影響を受けない/外部に影響を与えない
Slide 16
Slide 16 text
つらいところ - 長くなりがち - ボイラープレートが多い - 描画タイミングの管理 - テンプレートが書きづらい - 文字列 or DOM API - 当然、差分更新はない
Slide 17
Slide 17 text
lit-html / LitElement
Slide 18
Slide 18 text
lit-html - テンプレート構築用のライブラリ - Tagged Template Literalsベース - テンプレートが関数になるので取り回しやすい - Web Components以外の用途でも使える - 最近バージョン1.0が出た
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
LitElement - Web Componentsをシンプルに書くためのライブラリ - Polymerの後継 - 素のWeb Componentsを書くのは結構つらい - 面倒な部分をラップしてよしなに処理してくれる - テンプレートエンジンとしてlit-htmlを利用 - 最近バージョン2.0が出た
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
DEMO
Slide 23
Slide 23 text
DEMO - imgタグの改良版 - lazy loading/中断 - 拡大表示
Slide 24
Slide 24 text
Q. JSフレームワークは不要になるの?
Slide 25
Slide 25 text
なりません
Slide 26
Slide 26 text
JSフレームワークとの関わり - Web Components単体でアプリは作れない - 状態管理やルーティングの面倒はみない - JSフレームワークとは競合ではなく、共存するもの - 一部のコンポーネントがWeb Componentsで置き換えられる - 状態管理やルーティングは、フレームワークの責務 - フレームワーク → Web Componentsへの変換も
Slide 27
Slide 27 text
Web Componentsの使いどころ - 汎用的なコンポーネント - Atomic Designにおける〜Moleculesくらいがターゲット - UIライブラリが担っている領域 - 既存資産の活用 - JSフレームワーク製のコンポーネントをWeb Components化 - 別のシステム、JSフレームワークに流用できる
Slide 28
Slide 28 text
まとめ - Web Componentsは再利用可能な部品を作るAPI - 対応ブラウザも増えてきている - JSフレームワークとは競合ではなく共存するもの
Slide 29
Slide 29 text
Thank you !!