Slide 1

Slide 1 text

10分で理解する HTML Modules Takanori Oki / 20201119 / 隅田川.js

Slide 2

Slide 2 text

自己紹介 • Takanori Oki / @takanorip / @takanoripe(Twitter) • UIデザイナー、フロントエンドエンジニア • Web Platform Study GroupのOrganizer • https://www.youtube.com/channel/UCfToJ- sTOqvBnnuVq3zdZhA • 月1回くらいYouTubeでライブ配信してます • Web標準やブラウザ実装についての話を中心に話してます

Slide 3

Slide 3 text

HTML Imports

Slide 4

Slide 4 text

HTML Imports(Abandoned) • CustomElementsを外部からインポートする機能 • Chromeに先行実装されてたが様々な課題があり、開発が停止 • Global object pollution • Parse blocking with inline script • Independent dependency resolution infrastructures between HTML Imports and ES6 Script Modules • Non-intuitive import pass through

Slide 5

Slide 5 text

HTML Modules

Slide 6

Slide 6 text

HTML Modules • https://github.com/WICG/webcomponents/issues/645 • ES Modulesの仕組みに乗っかってHTML、CSS、JSONをJavaScript ファイルの中にインポートしようという仕組み • セキュリティ課題が見つかり開発が進んでいなかったが、TC39で 提案されているImport Assertionsが実装されれば解決されそう • https://github.com/tc39/proposal-import-assertions

Slide 7

Slide 7 text

Import Assertions

Slide 8

Slide 8 text

Import Assertions • Import文にインライン構文を追加し、ファイルの情報を補足する • ファイル拡張子とHTTP Content Typeヘッダがミスマッチなことが 多いため、拡張子からモジュールタイプを判断することが難しい

Slide 9

Slide 9 text

CSS Modules • ES Modulesを拡張して、CSSファイルからCSSStyleSheetをインポート できるようにする仕様 • CSSStyleSheetはadoptedStyleSheetsを介してdocumentまたは shadowRootに追加できる • https://wicg.github.io/construct-stylesheets/#using- constructed-stylesheets • 最近LitElementでこのCSS Modulesに対応するための変更があった

Slide 10

Slide 10 text

CSS Modules

Slide 11

Slide 11 text

まとめ • HTML ModulesはJavaScriptの中でHTMLをモジュールとして 扱うための技術 • CSSやJSONもモジュールとして扱えるようになるかも • CSS in JSがこのCSS Modulesをベースに作り変えられるかも? • 今後の動向に注目!

Slide 12

Slide 12 text

Thank you!