オプティマイザー
アプリケーションを再開可能にするには、多くのエントリポイントが必要です。例えば、ボタン`A`をクリックすることは、ボタン`B`をクリックすることとは異なるエントリポイントです。アプリケーションを実装する際には、通常、エントリポイントについては考えないため、通常は1つのエントリポイント、つまり`main()`関数のみになります。
オプティマイザーは、`$`文字で終わる関数を検索することで、その役割を果たします。例えば、オプティマイザーは`component$()`への呼び出しをエントリポイントに変換します。関数の名前は重要ではなく、`$`で終わることだけが重要であることに注意してください。
`$`が表示されるたびに、遅延読み込みの境界があると考える必要があります。これは、遅延読み込みされるコンテンツには遅延読み込みが必要になる場合があり、同期的にアクセスできないことを意味します。
オプティマイザーはQwikがシリアライズできるデータであれば何でもシリアライズできますが、クロージャは特別に処理されます。クロージャとは、他の関数の内部で作成され、レキシカルスコープ内の変数をキャプチャする可能性のある関数です。クロージャをシリアライズできることは、Qwikを再開可能にするための重要な特性です。クロージャのシリアライズがなければ、再開可能なアプリケーションを作成することは困難です。
例
この例では、コードに2つの`$`があるため、2つの遅延読み込みチャンクがあることに注意してください。
`シンボル`タブを開き、オプティマイザーが`onClick$`関数をどのようにエントリポイントに変換したかを確認してください。具体的には、`onClick$`エントリポイントが`@builder.io/qwik`モジュールをインポートしていないことに注意してください。
次に、`onClick$`コールバックを`store.count++`に変更します。
`シンボル`タブをもう一度開き、今回はオプティマイザーが`@builder.io/qwik`をインポートし、イベントハンドラのキャプチャされた状態を復元するために`useLexicalScope()`呼び出しを挿入したことに注意してください。関数のキャプチャされた状態を復元することが、Qwikを再開可能にする理由です。
チュートリアルの編集