ウェブコンポーネントは問題ない
- ウェブ開発コミュニティでは、ウェブコンポーネントをめぐってしばしば議論が起こる
- Ryan Carniato は "Web Components Are Not the Future" という記事を書き、Cory LaViska は "Web Components Are Not the Future — They’re the Present" という記事で応答した
- 著者はこの論争を平和的に整理しようとしている
パフォーマンス
- ウェブコンポーネントは Custom Elements を基盤としており、すべてのインターフェースは DOM を通じて処理される
- DOM ノードを最小限にすることが、パフォーマンス最適化の核心である
- しかし、パフォーマンスだけがすべてではなく、保守性、セキュリティ、使いやすさ、アクセシビリティなど他の要素も考慮する必要がある
- たとえば、
aria-* 属性をレンダリングしなければパフォーマンスは向上するかもしれないが、アクセシビリティのためには必須である
- パフォーマンス最適化は重要だが、実際にはレイアウトスラッシング、ネットワークウォーターフォール、不要な再レンダリングといった、より単純な問題のほうがパフォーマンスに大きな影響を与える
標準のコスト
- 標準をサポートするには、追加のコード記述と実行が必要になる
- しかし、ウェブコンポーネントをサポートすることは大きな負担ではない
- 新しいウェブプラットフォーム機能を考慮するのは当然のことであり、これは Symbols、Proxies、Promises などにも当てはまる
- ウェブ開発コミュニティの一部はウェブコンポーネントをサポートしたくないかもしれないが、それでも構わない
- ウェブは多様なアプローチを許容する大きなテントである
結論
- ウェブコンポーネント自体に問題はないが、あらゆるものを置き換えられるという約束は危うい
- ウェブコンポーネントはサーバーサイドレンダリング、アクセシビリティ、相互運用性などの面で弱点を持つ
- React、Solid、Svelte など、他のフレームワークが依然として輝く領域がある
- ウェブはさまざまな用途に使われており、それは創造性を表現する機会を提供する
- ウェブコンポーネントが自分に合わないとしても、それで構わない
# GN⁺のまとめ
- この記事はウェブコンポーネントに対するさまざまな視点を示し、パフォーマンスと他の要素とのバランスを強調している
- ウェブコンポーネントはすべてを置き換えることはできないが、特定の用途には適している
- ウェブ開発コミュニティは多様なアプローチを許容しており、それが創造性を高めている
- ウェブコンポーネントが合わないなら、他のフレームワークを使うこともできる
- ウェブの多様な機能は、新しい創造的表現の機会を提供する
1件のコメント
Hacker Newsの意見
「Web Components Are Not the Future」という記事には、説得力のある主張が不足していると感じた
人々はそれぞれ異なる最適化を追求しているため、意見が分かれる
SvelteはCustom Elements APIを通じてWeb Componentsの生成をサポートしている
Web Componentsはフルスタック開発者の生活をより良くするものではないと思う
Web ComponentsとShadow DOMは、ブラウザー拡張機能の動作を妨げる可能性がある
相互運用性には性能コストが伴う
Web Componentsは現在のフロントエンドの問題を解決できると思う
250,000行のJSコードベースを引き継ぎ、Web Componentsへリファクタリングしている
Web ComponentsはJSなしでも動作できる
フレームワークとWeb Componentsは、それぞれ異なる問題を解決するためのツールだ