Web Components
2018.04.23 @ Web Components Café by Polymer Japan
aggre
@aggre_
@aggre
FRAME00, INC. CTO
ooapp.co/aggre
• Web Components
• Web Components
• Web Components
Web Components
• Custom Elements
• Shadow DOM
• HTML Templates
• HTML Imports
• Custom Elements
• Shadow DOM
• HTML Templates
• HTML Imports
HTML Imports?
ES Modules?
HTML Modules?
• Custom Elements
• Shadow DOM
• HTML Templates
• HTML Imports
HTML Imports?
ES Modules?
HTML Modules?
ES Modules
Custom Elements
Shadow DOM
HTML Templates
ES Modules
Custom Elements
Shadow DOM
HTML Templates
ES Modules
IE
DOM
Web Components
•
•
•
JavaScript my-app.js
HTML index.html
ESM index.html
index.html
DOM
Web Components
Web Components
Custom Elements
React
React
Custom Elements
<my-app></my-app>
?
HTML my-app
Custom Elements
React
Vue
Vue
…?
Custom Elements
vue-custom-element @angular/elements
Custom Elements
vue-custom-element @angular/elements
•
•
<my-app></my-app>
<my-app></my-app>
<x-price />
<x-cart />
<x-promote />
<my-app></my-app>
<my-app></my-app>
<x-price />
<x-cart />
<x-promote />
App
<my-app></my-app>
<my-app></my-app>
<x-price />
<x-cart />
<x-promote />
App /
<my-app></my-app>
<my-app></my-app>
<x-price />
Web Components
•
•
•
•
•
•
•
https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#Using_the_lifecycle_callbacks
•
https://github.com/webcomponents/webcomponentsjs
innerHTML
Custom Elements
innerHTML
HTML Templates
HTML Templates
Custom Elements
Custom Elements
(template).content.cloneNode()
HTML Templates /
addEventListener
querySelector
innerText
• DOM API
• DOM API
•
• DOM API
• DOM API
•
HTML Template Instantiation
Appendix
• DOM API
• DOM API
•
HTML Imports
HTML Modules
Appendix
ES Modules
lit-html
lit-html = Template literals
lit-html
lit-html
lit-html
IDE
Microsoft/typescript-lit-html-plugin
React
React
Web Components
REST API
Shadow DOM
Shadow DOM
PostCSS
PostCSS
rollup-plugin-transform-postcss
Appendix
https://ooapp.co/project/LmsLz2a0pAUIHSZBmq3SH2XH
https://ooapp.co/project/LmsLz2a0pAUIHSZBmq3SH2XH
TypeScript
connected
connected
connectedCallback connected
( )
disconnectedCallback connected
( ) Private
Protected
render()
attributeChangedCallback
connected
attributeChangedCallback
connected
attributeChangedCallback
connected
connected
connected
• ES Class …
•
customElements.define 1
Set
Set
•
•
• Firebase Realtime Database
http://developer.kaizenplatform.com/entry/tatsuroro/2018-04-19
•
•
•
• React
• HTML Imports PolymerElements/app-route
•
•
• React
• HTML Imports PolymerElements/app-route
…
Web Components
•
• Polyfill
• ES Modules
• module
• HTML Modules
• Web Components
• Web Components
• Custom Elements
• lit-html
•
• Web Components,
Thank you
ooapp.co/aggre

現場の Web Components