同期モジュールの場合、モジュールは事前にメモリにロードされている必要があります。 非同期モジュールの場合、例えば、requirejs の実装はフロントエンドに依存しており、事前に実行されますが、これも事前にメモリにロードされるのではないでしょうか? では、なぜ非同期と言われるのでしょうか? AMD と CMD についてたくさん読んだ後、同期モジュールの読み込みと非同期モジュールの読み込みの違いがよくわかりません。
このメカニズムは[メモリ]とはあまり関係がなく、[スクリプトのダウンロードのタイミング]として理解できます。
フロントエンドの特徴は、スクリプト ファイルのサイズとダウンロード時間がページのパフォーマンスに直接影響することです。同期読み込みの仕様では、スクリプトを実行する前にすべての依存関係をダウンロードする必要があります。
非同期読み込みの仕様では、必要な場所までコードが実行された場合にのみ、必要なスクリプトが読み込まれます。たとえば、巨大な単一ページのアプリケーションでは、ホームページ上のスクリプトは非常に軽く、特定の機能ページに入るときに必要なモジュールを非同期でロードできるため、パフォーマンスが大幅に向上します。
requirejs の非同期読み込みでは、基本的に、非ブロッキングな非同期読み込みを実現するために、非同期で読み込む必要がある <script> 要素が追加されます。次に、onload を通じて各スクリプトの読み込み完了ステータスを監視し、依存関係のある複数のスクリプトの順次読み込み順序を実現します。 async と onload を使用して単純な非同期読み込み関数を実装できますが、requirejs のような関数を実装するには多大な労力がかかります。
このメカニズムは[メモリ]とはあまり関係がなく、[スクリプトのダウンロードのタイミング]として理解できます。
フロントエンドの特徴は、スクリプト ファイルのサイズとダウンロード時間がページのパフォーマンスに直接影響することです。同期読み込みの仕様では、スクリプトを実行する前にすべての依存関係をダウンロードする必要があります。
非同期読み込みの仕様では、必要な場所までコードが実行された場合にのみ、必要なスクリプトが読み込まれます。たとえば、巨大な単一ページのアプリケーションでは、ホームページ上のスクリプトは非常に軽く、特定の機能ページに入るときに必要なモジュールを非同期でロードできるため、パフォーマンスが大幅に向上します。
requirejs の非同期読み込みでは、基本的に、非ブロッキングな非同期読み込みを実現するために、非同期で読み込む必要がある <script> 要素が追加されます。次に、onload を通じて各スクリプトの読み込み完了ステータスを監視し、依存関係のある複数のスクリプトの順次読み込み順序を実現します。 async と onload を使用して単純な非同期読み込み関数を実装できますが、requirejs のような関数を実装するには多大な労力がかかります。