🧪 開発ツール
段階: プロトタイピング
これは最終的に、アプリケーションをより適切にデバッグするためのブラウザの開発ツールになります。現在は、アプリケーションの状態をより理解するためのユーティリティのコレクションです。
qwik/json
Qwikはアプリケーションの状態を<script type="qwik/json">
タグにシリアライズします。これにより、DOMを見てアプリケーションの状態を検査できます。残念ながら、このフォーマットは人間が読める形式ではありません。以下の手順では、JSONをより読みやすい形式に解析する方法について説明します。
- ブラウザの開発ツールを開きます。
コンソール
で、次のJavaScriptを実行します
import("https://qwik.dokyumento.jp/devtools/json/");
- このスクリプトは
qwik/json
を解析し、人間がより読める形式を返します。
結果の出力のほとんどは自明であるはずです。ただし、方向性を示すために、ここでいくつかの重要なポイントを示します。(これは、出力の完全なドキュメントではありません。)
objs
: これらは、シリアライズされたシステム内のオブジェクトです。ctx
:QContext
オブジェクトのセットです。refs
:QRef
オブジェクトのセットです。sub
:QSubscription
オブジェクトのセットです。QContext
: Qwikが特定のコンポーネントのためにシリアライズする必要があった状態を表します。これには、コンポーネントのprops
と、コンポーネントが実行する必要がある可能性のあるTask
オブジェクトのセットが含まれます。QRef
: 要素にリスナーがある場合、QRef
はリスナーと、リスナーがキャプチャした可能性のあるオブジェクトを収集します。
Qwikのシリアライゼーションの考え方は、Qwikは最小限の情報のみをシリアライズすることです。このため、QContext
またはQRef
から到達可能なオブジェクトのみをシリアライズします。これは、これらの2つから到達できないオブジェクトがある場合、そのオブジェクトはシリアライズされないことを意味します。これは良いことで、Qwikがアプリケーションの状態全体をシリアライズするのではなく、レンダリングされているコンポーネントから到達可能な状態のみをシリアライズすることを意味します。
反対に、オブジェクトがシリアライズされているのに、シリアライズされるべきではないと思われる場合は、そのオブジェクトを逆方向にたどって、シリアライズされている理由を確認できます。この目的のために、すべてのオブジェクトには、オブジェクトが保持される原因となっているオブジェクトを指す__backRef
プロパティが含まれています。オブジェクト参照をそのルート(QContext
またはQRef
である必要があります)まで逆方向にたどることによって、特定のオブジェクトがなぜシリアライズされているのかを判断できます。同様に、コードをリファクタリングして、当該オブジェクトのシリアライゼーションを防ぐことができるかどうかを確認することもできます。