Google Analytics asyncコードは、javascriptコードの実行に非常に異なるデザインパターンを使用します。Googleアナリティクスの非同期デザインパターンの名前とその使用場所を教えてください。
コードはライブラリによって異なり、ライブラリがロードされているかどうかはわかりません。ライブラリがまだロードされていない場合は、すべてのコマンドがArrayオブジェクトに格納されます。ライブラリがロードされると、_gaqオブジェクトが作成され、含まれているシーケンス内のすべてのコマンドが実行されます。その後、プッシュ機能が上書きされ、今後のコマンドがすぐに実行されます。
考えられるのは、コマンドがキューに入れられたときに非常に高速に実行されるようにすることです。このコードは、ライブラリがロードされたときに実際に評価されます。
また、ライブラリにはパラメータasync=true
をロードします。これは、実際のページ読み込み時間にほとんど影響を与えません。
コマンドはちょうどそれの同期バージョンのように見えますが、最初の文字列は、関数名で、次のパラメータがその関数のパラメータです。また、この配列に関数をプッシュすることもできます。関数はヌルコンテキストでも順番に実行されます。だから、ライブラリと同期する何かをする必要があれば、_gaqの中でこれを行う関数をプッシュすることができます。
これは非常に巧妙な解決策だと思いますが、以前は見たことがありません。このデザインパターンの名前や、Googleアナリティクスのトラッキングコードの他に誰が使用されているのかを知っている人はいますか?
jquery.jsファイルで 'async = true'を使用して、ページの読み込み時間を短縮したい場合は、読み込みが完了したかどうかを知る方法がなく、コードが実行されていないときもありません。このようなjQueryコマンドをキューに入れたり、すべてのコードを単一の関数に入れて、jQueryのロードが完了したら実行されるようにキューに入れるのは良いことではないでしょうか? – Eduardo
@eduardocereto確かにそうです。 jQueryに、グローバルな '_domReady'配列を提供し、DOM準備関数を読み込むことができるようにすることを提案してください。 – Raynos
これは '_domReady'ではなく、' _jQueryReady'のようになります。なぜなら、domは必ずしもReadyではないからです。 'async = true'フラグを指定すると、ファイルはDOMの準備が整う前、またはDOMが準備ができた後にロードされます。 window.onloadが起動してもjsファイルが読み込まれることがあります。 – Eduardo