Qwik は、JavaScript/TypeScript 向けのWebアプリケーションフレームワークである。 SSR 及びブラウザ上での実行におけるパフォーマンスに重点を置いている。

概要 Next.js や Nuxt などのフレームワークでは、SSR を行い、それをクライアントで動かすためにハイドレーションを行う。 ハイドレーションには一定のコストが存在し、それはコードが多くになるにつれて大きくなるという課題が存在する。

それに対して Qwik は、Resumable という手段を提供する。Resumable は、ハイドレーションを行わない。Resumable では、ページのロード時に小さな JavaScript コードのみをダウンロードすることで、コードの量によらず JavaScript のロード時間は変わらない。Qwik では、ビルド時にコンポーネントや関数をチャンク分割そ、ユーザーのインタラクションがあるなど必要なときのみ最小限のチャンクをダウンロードし、実行する。

例えば、以下のコードにおいて、component$ という単位でコンポーネントが非同期にチャンク分割される。const Component = component$(() => { return <div>Hello World!</div> })

Qwik City Qwik City とは、Qwik におけるメタフレームワークである。 通常の Qwik プロジェクトにおいては、Qwik City を使用する。

Qwik City は、ファイルベースルーティングを提供する。 また、Service Worker を用いてチャンクをキャッシュすることにより、チャンクを高速に読み込むことができる。

参考文献