Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LitElementとWeb Componentsの比較 #meguroes
Search
tiwu
June 06, 2019
Technology
700
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LitElementとWeb Componentsの比較 #meguroes
Meguro.es # 21 @ ビザスク
で登壇した資料です
https://lit-element-sample.netlify.com/
tiwu
June 06, 2019
More Decks by tiwu
See All by tiwu
Eleventy で SSG
tiwu_dev
2
720
Eleventy - 11ty
tiwu_dev
0
150
Install for PWA
tiwu_dev
0
3.4k
App Shortcuts
tiwu_dev
0
950
Web Vitals
tiwu_dev
0
88
Web Share API
tiwu_dev
0
3.4k
Badge in Background
tiwu_dev
0
110
PWAとCache API #frontkansai
tiwu_dev
5
4.2k
Web Componentsとlit-element #frontkansai
tiwu_dev
2
3.5k
Other Decks in Technology
See All in Technology
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
140
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
1
330
Benchmarking Vector Databases: pgvector vs. LanceDB
tsho
0
150
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
190
KAEN Company Deck
kaen
PRO
0
330
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.3k
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.7k
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
240
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
4
1.6k
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
150
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
460
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
310
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
500
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
500
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
490
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
320
Product Roadmaps are Hard
iamctodd
55
13k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Transcript
LitElementとWeb Componentsの比較 Wataru Taguchi
アジェンダ - 自己紹介 - Web Componentsとは - LitElementとは - Todoリスト
- 比較 - 所感 - Q&A - まとめ
自己紹介 # Wataru Taguchi - GameWith Front End Engineer -
PWAとかWeb Componentsとかパフォーマンス チューニングが好き - @tiwu_official - FF14, Beer, Kyoto Animation
Web Componentsとは Vanilla JS、HTML、CSS を使用して 再利用可能なコンポーネントを作成する仕組み
- ライブラリに依存せずコンポーネントを作成できる - ビルド作業はない - どんなサイトでも動く - Scoped CSSが書ける -
命名ルール地獄からの解放 メリット
- カスタム要素 - 新しくHTMLタグを作成する - Shadow DOM - DOMを隠すことができる Web
Componentsを構成する技術
シンプルなボタン
シンプルなボタン text属性を利用し表示 cssとHTMLをまとめて配布する
LitElementとは 軽量で高速なWebコンポーネントをつくる シンプルなベースクラス
- 宣言的に書ける - 要素は、プロパティが変更されると自動的に更新される - 軽い - lit-htmlが変更されたデータのみを再描画するため、DOMの更新は非常に高 速 -
Web Componentsに準拠している - どのフレームワークでも動く - TypeScriptでも書ける メリット
LitElementのサンプル
Todoリスト https://lit-element-sample.netlify.com/
Todoリスト my-todo my-list my-item my-input
Todoリスト my-todo my-list my-item my-input 入力
Todoリスト my-todo my-list my-item my-input 入力 CustomEvent発火
Todoリスト my-todo my-list my-item my-input 入力 CustomEvent発火 入力された値を受け取って listに追加 &LSに追加
Todoリスト my-todo my-list my-item my-input 入力 CustomEvent発火 入力された値を受け取って listに追加 &LSに追加
リスト更新
Todoリスト my-todo my-list my-item my-input 削除
Todoリスト my-todo my-list my-item my-input 削除 CustomEvent発火
Todoリスト my-todo my-list my-item my-input 削除 CustomEvent発火 CustomEvent発火
Todoリスト my-todo my-list my-item my-input 削除 CustomEvent発火 indexを元にlistから削除 &LSに追加 CustomEvent発火
Todoリスト my-todo my-list my-item my-input 削除 CustomEvent発火 CustomEvent発火 indexを元にlistから削除 &LSに追加
リスト更新
比較 my-input addEventListenerを利用し、イベントを付与 inputのvalueは直接DOM弄りを空にする
比較 my-input @clickを利用し、イベントを付与 inputのvalueは直接DOMは弄らず空にする
比較 my-item addEventListenerを利用し、イベントを付与 indexはattributeから取得
比較 my-item @clickを利用し、イベントを付与 indexはClassの変数から取得
比較 my-list observedAttributesを利用しlistプロ パティの変更を監視 attributeChangedCallbackで変更 があったら、my-itemを削除して新し いlistを元にmy-itemをDOMに挿入 する my-itemにdeleteイベントを貼って、 deleteイベントを再度発火させる
比較 my-list this.list.mapを利用してmy-itemを表示させる @my-delete-eventでイベントを貼って、再度発火させる
比較 my-todo listはJSON.stringifyを使ってJSON文字列にして”をエスケープさせる listの追加、削除があったらsetAttributeを使って,リストを描画させる
比較 my-todo JSON文字列はエスケープ無しで問題なし list変数に変更を加えるだけで、リストの再描画が走る ※ filterではなくspliceを利用し削除したら再描画は走らなかった
- 動的な値の変更・描画はLitElementが楽 - LitElementはcssの補完が効かないのが辛い - bundle size - web components
1.5kb - LitElement 7.7kb 所感
- https://www.youtube.com/ - https://voice.ameba.jp/ - https://support.pairs.lv/hc/ja/ - 日経電子版(現在リニューアル中) 事例
Q : 対応ブラウザは? A : Edge以外大丈夫 Q&A
Q : Edgeどうすれば・・? A : Chromiumベースになるから大丈夫だろう・・・ Q&A
Q : クライアントサイドでレンダリングされるということは SEOが・・・ A : Google I/Oで最新Chromiumレンダリングエンジンを サポートすることが発表されたから大丈夫 Q&A
- ライブラリに依存せずコンポーネントが作れる - Scoped CSSが書ける - LitElementは結構便利 - ただ描画周りは気をつける必要あり -
結構大手のサイトで使われている まとめ
Web Components / LitElement はいいぞ
ご清聴ありがとうございました