15

だから私はしばらくの間require.jsを使ってきましたが、実際にはそれが内部でどのように機能するのか分からないことに気付きました. AMDローダーだそうです。

CommonJS が同期的であることは理解しています。つまり、読み込み中に他のコードの実行がブロックされるということです。一方、AMD は非同期です。これは私が混乱するところです。

モジュールを定義するとき、コールバックを実行するために a、b、c をロードする必要があります。ここで非同期はどのように機能しますか?

  1. これら 3 つの依存関係を最初にロードする必要がある場合、同期ではありませんか?
  2. AMDがa、b、cを非同期にロードし、それらのファイルがロードされているかどうかを確認し(順序は気にしません)、コールバックを実行するということですか?
define("name",["a","b","c"], function(a,b,c){

});
4

2 に答える 2

12

ご存じのとおり、「AMD」(Asynchronous Module Definition (AMD)) は特定の API です。RequireJS、curl.js、Dojo など、AMD 互換の「ローダー」が多数あります。

JQuery や Dojo などのフレームワークが未加工の Javascript に対する API を提供するのと同じように。AMD を使用するプログラム:

1) AMD 互換の .js ライブラリが必要です。

2) 特定のプログラミングの「ルール」と「慣習」を要求し、

3)最終的には、「Javascriptエンジン」(IE、Chrome、Firefoxなど)で実行されるJavascriptの「上」に位置します。

ここに私が有用だと思ったいくつかのリンクがあります:

PS:当面の質問に答えるために、後者のリンクには、「require()」と「dynamically_loaded dependencies」に関する少しの議論があります。

于 2012-08-24T23:48:03.487 に答える