JavaScriptでよく言われる4つのモジュール仕様
8039 ワード
JavaScriptでよく言われるモジュール仕様 Common JS仕様 AMD規格 UMD規格 ES 6モジュール仕様 Common JS仕様
Common JS仕様はモジュールがどのように編纂されるべきかを定義しており、各モジュールシステム間で相互操作が可能です.ファイルはモジュールです. は、require()を使用してモジュールをロードし、module.export出力モジュールを使用するので、各モジュール間で相互作用が可能である. は、非同期ローディングをサポートしていません.
AMD仕様
名前の通り、非同期モジュール定義(AMD)は主に非同期ローディングモジュールを解決するために提案され、モジュールと依存項を指定する方法でモジュールを定義します.
Node.js環境におけるモジュールシステムはCommon JS規格に基づいており、ブラウザ環境においてはAMDを使用して実現する必要があることを知っています.
もしモジュールがあれば、Node.js環境とブラウザ環境の中で同時に実行できます.どうすればいいですか?UMDモードは使えます.
UMD仕様
AMDとCommunJSの仕様を両立させるために、汎用モジュール定義(UMD)モードが提案され、両者を互換しながら、従来のグローバル変数モードもサポートされています.
ES 6モジュール仕様
ES 6モジュールの特徴は以下の通りです. は、importローディングとexport出力を使用する. モジュールは一回だけロードされます. で導出されたモジュールは変数参照であるため、メモリ内で共有することができる. 現在はほとんどの先端項目でES 6モジュールを使用していますが、ES 6モジュール化の目的はコンパイル段階でモジュール間依存関係を確定するため、コンパイル時にBabel、Webpackなどを使って依存関係ツリーを構築する必要があります.
このほか、ES 6は各ブラウザでの互換性の違いが大きいので、BabalコンパイルやWebpackをパッケージ化する必要があります.このプロセスは先端コード構築といいます.
Common JS仕様はモジュールがどのように編纂されるべきかを定義しており、各モジュールシステム間で相互操作が可能です.
var beta = require('beta');
function verb {
return beta.verb();
}
module.exports = {
verb: verb
};
Common JSには以下の特徴があります.AMD仕様
名前の通り、非同期モジュール定義(AMD)は主に非同期ローディングモジュールを解決するために提案され、モジュールと依存項を指定する方法でモジュールを定義します.
define("alpha", ["require", "exports", "beta"], function (
require,
exports,
beta
) {
exports.verb = function () {
return beta.verb();
//
return require("beta").verb();
};
});
この例では、IDがアルファのモジュールであり、IDがベータのモジュールに依存する.Node.js環境におけるモジュールシステムはCommon JS規格に基づいており、ブラウザ環境においてはAMDを使用して実現する必要があることを知っています.
もしモジュールがあれば、Node.js環境とブラウザ環境の中で同時に実行できます.どうすればいいですか?UMDモードは使えます.
UMD仕様
AMDとCommunJSの仕様を両立させるために、汎用モジュール定義(UMD)モードが提案され、両者を互換しながら、従来のグローバル変数モードもサポートされています.
(function (root, factory) {
if (typeof define === "function" && define.amd) {
// AMD
define(["jquery"], factory);
} else if (typeof exports === "object") {
// CommonJS
module.exports = factory(require("jquery"));
} else {
//
root.returnExports = factory(root.jQuery);
}
})(this, function ($) {
// ...
});
UMDモジュールのヘッダは、通常、モジュールのキャリア環境を判断するためのコードがあり、異なる環境によって様々な方法でロードされます.ES 6モジュール仕様
// import
import BaseTask, {
TaskType } from "./BaseTask";
// export
export {
BaseTask };
この例では、importローディングモジュールを使用して、export出力モジュールを使用する.ES 6モジュールの特徴は以下の通りです.
このほか、ES 6は各ブラウザでの互換性の違いが大きいので、BabalコンパイルやWebpackをパッケージ化する必要があります.このプロセスは先端コード構築といいます.