この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 9631|答える: 0

[JavaScript] require() 文 AMD仕様

[リンクをコピー]
掲載地 2019/02/13 14:01:09 | | |
この投稿は2019年2月13日14:04にSummerによって最終編集されました。

2009年、アメリカのプログラマー、ライアン・ダールnode.jsサーバーサイドプログラミングにJavaScript言語を活用するプロジェクトを作成しました。

これが「Javascriptモジュラープログラミング」の誕生を示しています。 フロントエンドの複雑さは限られており、モジュールがなくても構いませんが、サーバー側ではオペレーティングシステムや他のアプリケーションと連携するためのモジュールが必要で、そうでなければプログラム自体ができません。

ノードプログラミングで最も重要なアイデアの一つはモジュールであり、この考え方がJavaScriptの大規模なエンジニアリングを可能にしています。 モジュラープログラミングはJSの世界で人気があり、これを基盤としていました。さらにブラウザ側では、requirejsやseajsのようなツールキットも登場しました。いわば、対応する仕様の下では、ES6以前、つまりES6モジュールが完全に実装される前のすべてのモジュラープログラミングが必須ルール付きでした。

CommonJSでは、exposureモジュールはmodule.exportsとexportsを使っており、多くの人はなぜ2つの公開オブジェクトがあるのか理解していません。これは後で導入されます

CommonJSでは、モジュールを読み込むためのグローバルメソッドrequire()があります。 数学モジュールがあってmath.js、こうやって読み込むことができます。



その後、モジュールが提供するメソッドを呼び出すことができます:

まさにCommonJSが用いたdemandメソッドのために、AMDやCMDが用いたrequiメソッドが後にモジュールのスタイルを指すために使われるようになりました

AMD仕様

サーバーサイドモジュールの場合、誰もがクライアントサイドモジュールを求めるのは自然なことです。 そして、両者が互換性があり、モジュールがサーバーとブラウザの両方で修正なしで動作できることが望ましいです。

しかし、CommonJS仕様がブラウザ環境には適用できない大きな制約があります。 前のセクションのコードは、ブラウザで動作すると大きな問題が起きるでしょう



2行目のmath.add(2, 3)は最初の行のrequire('math')の後に実行されるため、ロードが終わるまで待math.jsなければなりません。 つまり、読み込み時間が長いとアプリ全体がそこで止まって待機します。

サーバー側では問題ありません。なぜなら、すべてのモジュールはローカルハードディスクに保存され、同期的にロード可能であり、待機時間はハードディスクの読み取り時間だからです。 しかしブラウザにとっては大きな問題です。なぜならモジュールはサーバー側に配置されており、待機時間はインターネット速度の速度に依存し、それに長くかかることがあり、ブラウザは「停止死」状態になるからです。


したがって、ブラウザ側のモジュールは「同期」を使わず、「非同期」のみを使用できます。 これがAMD仕様誕生の背景です。

AMDは「Asynchronous Module Definition(非同期モジュール定義)」の略称で、「非同期モジュール定義(Asynchronous Module Definition)」を意味します。 モジュールを非同期にロードし、モジュールの読み込みはその後の文の動作に影響を与えません。 このモジュールに依存するすべての文は、読み込みが完了するまで実行されないコールバック関数で定義されています。

モジュールは特定の定義関数で定義されなければなりません。


•ID:文字列、モジュール名(オプション)
・依存関係:相対パスを用いて読み込みたい従属加群(任意)です。 、これは配列形式であることに注意してください。
•ファクトリー:ファクトリー法、モジュール関数を返す
もしモジュールが他のモジュールに依存しない場合、それはdefine()関数で直接定義できます。


もしそのモジュールが他のモジュールにも依存する場合、define() 関数の最初の引数はモジュールの依存関係を示す配列でなければなりません。



require() 関数が上記のモジュールを読み込む際、まずファイルを読み込みますLib.js。

AMDもモジュールの読み込みにrequire()文を使用しますが、CommonJSとは異なり、2つのパラメータが必要です。

最初のパラメータ[module]は配列であり、その中のメンバーは読み込むモジュールです。 2つ目のパラメータコールバックは、ロード成功後のコールバック関数です。 以前のコードをAMD形式に書き直すと、次のようになります:


Math.add()はMathモジュールの読み込みと同期しておらず、ブラウザは一時停止動作を起こしません。 つまり、明らかにAMDの方がブラウザ環境により適しているということです。

現在、AMD仕様:require.jsとcurl.jsを実装する主要なJavascriptライブラリは2つあります。







先の:init: function (){}方法的写法原因
次に:【実戦】キバナ 6.5.2 中国語チュートリアル
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com