Javascriptモジュール化プログラミング(二)AMD仕様(規範使用モジュール)
2844 ワード
このシリーズの第一部はJavascriptモジュールの基本的な書き方を紹介しています.今日はどのようにモジュールを規範化して使うかを紹介します.まず考えてみます.なぜモジュールが重要ですか?これから詳しく紹介します.興味のある友達は調べられますよ.今日はモジュールの使い方を紹介します.
七、モジュールの仕様 まず考えてみます.なぜモジュールが重要ですか? モジュールがあるので、他の人のコードをより便利に使えます.どんな機能が欲しいなら、どのモジュールをロードしますか? しかし、このようにして一つの前提があります.それはみんなが同じ方式でモジュールを編纂しなければなりません.そうでなければ、あなたの書き方があります.Javascriptモジュールはまだ公式仕様がないということを考慮して、もっと重要です.現在、通行するJavascriptモジュールの規格は全部で2種類があります.AMDを主に紹介しますが、まずCommunJSから話します.
八、Common JS 2009年には、米国のプログラマーRyan Dahlがnode.jsプロジェクトを作成し、javascript言語をサーバー側のプログラミングに使用します.
このマークは「Javascriptモジュール化プログラミング」が正式に誕生しました.正直に言うと、ブラウザの環境下では、モジュールがなくても特に大きな問題ではないです.結局、ウェブページのプログラムの複雑さは限られています.しかし、サーバー側ではモジュールが必要です.オペレーティングシステムと他のアプリケーションとの対話が必要です.
node.jsのモジュールシステムは、Common JS仕様を参照して実現されます.Common JSには、モジュールをロードするための大域的な方法があります.数学モジュールがあると仮定して、下記のようにロードできます.
九、ブラウザ環境 サーバー側モジュールがあったら、自然にクライアントモジュールが欲しいです.そして、できれば両方の互換性があります.一つのモジュールは変更せずにサーバーとブラウザで実行できます.しかし、重大な制限のため、CommunJS仕様はブラウザ環境には適用されません.前のコードですか?ブラウザで実行すれば、大きな問題があります.分かりますか?
これはサーバー側の問題ではありません.すべてのモジュールがローカルハードディスクに保存されていますので、同時にロードが完了します.待ち時間はハードディスクの読み込み時間です.しかし、ブラウザについては、これは大きな問題です.モジュールはサーバーの端に置いています.待ち時間はネットの速度によって遅くなります.長い間待つかもしれません.ブラウザは「仮死」状態にあります.
したがって、ブラウザ側のモジュールは、「同期ローディング」を採用することができず、「非同期ローディング」しか採用できません.これがAMD仕様の誕生の背景です.
十、AMD AMDは「Aynchronous Module Definition」の略語で、「非同期モジュール定義」という意味です.モジュールを非同期的にロードします.モジュールのロードは、後のステートメントの動作に影響しません.このモジュールに依存するすべてのステートメントは、ロードが完了するまで一つのコールバック関数で定義されます.
AMDはrequire()の語句を用いてモジュールをロードしますが、Common JSとは異なり、二つのパラメータが必要です.
(終わり)
七、モジュールの仕様 まず考えてみます.なぜモジュールが重要ですか? モジュールがあるので、他の人のコードをより便利に使えます.どんな機能が欲しいなら、どのモジュールをロードしますか? しかし、このようにして一つの前提があります.それはみんなが同じ方式でモジュールを編纂しなければなりません.そうでなければ、あなたの書き方があります.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の使い方をさらに説明し、モジュール化プログラムをどのように実戦に投入するかを説明します. (終わり)