AMDとCMDとCommon JSの違い
2225 ワード
Common JS
AMD
上記の
したがって、ブラウザ側のモジュールは、「同期ローディング」を使用することができず、「非同期ローディング」しか採用できません.これが
CommonJSは主にJSのバックエンドでのパフォーマンスのために制定されています.彼は先端に合わないです.AMDが現れました.それは主に先端JSの表現のために規範を作ります.
CMD
参考記事:http://www.jianshu.com/p/09ffac7a3b2c
CommonJS
は、サーバ及びデスクトップ環境において、Node.JS
がCommonJS
の仕様CommonJS
に準拠しているような、ブラウザ環境以外にJavaScript生態系を構築することを目的として生成されたプロジェクトであり、JavaScript
の作用領域問題を解決するために規定されたモジュール形態であり、各モジュールに自身の名前空間で実行させることができる.この仕様の主な内容は、モジュールがmodule.exports
を介して外部変数またはインターフェースを導出し、require()
を介して他のモジュールの出力を現在のモジュールの機能領域に導入しなければならないことである.例を挙げて説明しますvar clock = require('clock');
clock.start();
CommonJS
は同期ローディングモジュールである.AMD
CommonJS
仕様に基づくnodeJS
が出てきたら、サービス端末のモジュール概念が形成されています.自然にクライアントモジュールが欲しいです.そして、できれば両方の互換性があります.一つのモジュールは変更せずにサーバーとブラウザで実行できます.しかし、重大な制限のため、CommonJS
仕様はブラウザ環境に適用されない.上のコードをクライアントブラウザで実行するとエラーが発生します.上記の
require
方法は同期されている.これはサーバー側の問題ではありません.すべてのモジュールがローカルハードディスクに保存されていますので、同時にロードが完了します.待ち時間はハードディスクの読み込み時間です.しかし、ブラウザについては、これは大きな問題です.モジュールはサーバーの端に置いています.待ち時間はネットの速度によって遅くなります.長い間待つかもしれません.ブラウザは「仮死」状態にあります.したがって、ブラウザ側のモジュールは、「同期ローディング」を使用することができず、「非同期ローディング」しか採用できません.これが
AMD
規格の誕生の背景です.CommonJSは主にJSのバックエンドでのパフォーマンスのために制定されています.彼は先端に合わないです.AMDが現れました.それは主に先端JSの表現のために規範を作ります.
AMD
はAsynchronous Module Definition
の略語で、「非同期モジュール定義」という意味です.モジュールを非同期的にロードします.モジュールのロードは、後のステートメントの動作に影響しません.このモジュールに依存するすべてのステートメントは、ロードが完了するまで一つのコールバック関数で定義されます.AMD
もrequire()
文ローディングモジュールを採用しているが、CommonJS
とは異なり、2つのパラメータが要求される.require([module], callback);
require(['clock'],function(clock){
clock.start();
});
requireJs
はAMD
仕様の実装である.CMD
CMD
(Common Module Definition)は、seajs
推賞の仕様であり、CMD
は近くに依存し、使う時はrequire
とする.これは次のように書きます.define(function(require, exports, module) {
var clock = require('clock');
clock.start();
});
AMD
およびCMD
の最大の違いは、ロードのタイミングまたは方法が異なる代わりに、依存モジュールの実行タイミング処理に対して異なることであり、両方とも非同期ローディングモジュールである.AMD
はフロントエンドに依存し、js
は依存モジュールが誰であるかを知りやすく、すぐにローディングすることができる.CMD
は近くに依存しています.モジュールを文字列に変えて解析して初めてそれらのモジュールに依存していることが分かります.参考記事:http://www.jianshu.com/p/09ffac7a3b2c