Javascriptモジュール化プログラミング(二)AMD仕様(規範使用モジュール)

2844 ワード

このシリーズの第一部はJavascriptモジュールの基本的な書き方を紹介しています.今日はどのようにモジュールを規範化して使うかを紹介します.まず考えてみます.なぜモジュールが重要ですか?これから詳しく紹介します.興味のある友達は調べられますよ.今日はモジュールの使い方を紹介します. 
七、モジュールの仕様 まず考えてみます.なぜモジュールが重要ですか? モジュールがあるので、他の人のコードをより便利に使えます.どんな機能が欲しいなら、どのモジュールをロードしますか? しかし、このようにして一つの前提があります.それはみんなが同じ方式でモジュールを編纂しなければなりません.そうでなければ、あなたの書き方があります.Javascriptモジュールはまだ公式仕様がないということを考慮して、もっと重要です.現在、通行するJavascriptモジュールの規格は全部で2種類があります.AMDを主に紹介しますが、まずCommunJSから話します. 
八、Common JS 2009年には、米国のプログラマーRyan Dahlがnode.jsプロジェクトを作成し、javascript言語をサーバー側のプログラミングに使用します. 
このマークは「Javascriptモジュール化プログラミング」が正式に誕生しました.正直に言うと、ブラウザの環境下では、モジュールがなくても特に大きな問題ではないです.結局、ウェブページのプログラムの複雑さは限られています.しかし、サーバー側ではモジュールが必要です.オペレーティングシステムと他のアプリケーションとの対話が必要です.
node.jsのモジュールシステムは、Common JS仕様を参照して実現されます.Common JSには、モジュールをロードするための大域的な方法があります.数学モジュールがあると仮定して、下記のようにロードできます. 
var math = require('math'); 
その後、モジュールが提供する方法を呼び出すことができます. 
var math = require('math'); 

  math.add(2,3); // 5 
このシリーズは主にブラウザに対してプログラミングしていますので、node.jsには関わりません.私たちはここで知っている限り、モジュールをロードするためにrequireを使えばいいです.
九、ブラウザ環境 サーバー側モジュールがあったら、自然にクライアントモジュールが欲しいです.そして、できれば両方の互換性があります.一つのモジュールは変更せずにサーバーとブラウザで実行できます.しかし、重大な制限のため、CommunJS仕様はブラウザ環境には適用されません.前のコードですか?ブラウザで実行すれば、大きな問題があります.分かりますか? 
var math = require('math'); 

  math.add(2, 3); 
第二行mash.add(2,3)は、第一行のrequire(‘math’)の後に運行しますので、math.jsのロードが完了するまで待つ必要があります.つまり、ロード時間が長いとアプリケーション全体が止まって待つということです.
これはサーバー側の問題ではありません.すべてのモジュールがローカルハードディスクに保存されていますので、同時にロードが完了します.待ち時間はハードディスクの読み込み時間です.しかし、ブラウザについては、これは大きな問題です.モジュールはサーバーの端に置いています.待ち時間はネットの速度によって遅くなります.長い間待つかもしれません.ブラウザは「仮死」状態にあります.
したがって、ブラウザ側のモジュールは、「同期ローディング」を採用することができず、「非同期ローディング」しか採用できません.これがAMD仕様の誕生の背景です.
十、AMD AMDは「Aynchronous Module Definition」の略語で、「非同期モジュール定義」という意味です.モジュールを非同期的にロードします.モジュールのロードは、後のステートメントの動作に影響しません.このモジュールに依存するすべてのステートメントは、ロードが完了するまで一つのコールバック関数で定義されます.
AMDはrequire()の語句を用いてモジュールをロードしますが、Common JSとは異なり、二つのパラメータが必要です. 
require([module], callback); 
最初のパラメータ[module]は、モジュールをロードするメンバーの配列です.二つ目のパラメータのcalbackは、ロード成功後のコールバック関数です.前のコードをAMD形式に書き換えると、次のようになります. 
require(['math'], function (math) { 

    math.add(2, 3); 

  }); 
math.add()はmathモジュールのローディングと同期していないので、ブラウザで仮死は発生しません.だから、AMDはブラウザ環境に適していることは明らかです. 現在、主に2つのJavascriptライブラリがAMD仕様を実現しました.require.jsとcurl.js.このシリーズの第三部分は、require.jsを紹介することによって、AMDの使い方をさらに説明し、モジュール化プログラムをどのように実戦に投入するかを説明します. 
(終わり)