Common JSとAMD/CMDを徹底的に分かります.
1948 ワード
JSのモジュール仕様(CommunJS、AMD、CMD)は、jsモジュール化というものを聞いたことがあれば、CommunJSやAMD、さらにはCMDなどの仕様も聞いたことがあります. これらの規範は一体何ですか?何ですか?
一、Common JS
Common JSはJSの表現のために規範を制定して、NodeJSはこのような規範の実現で、webpackもCommonJSの形式で書きます.jsはモジュールの機能がないので、CommunJSが生まれました.jsはどこでも運行してほしいです.ブラウザだけではないです.その究極の目標はPython、Ruby、Java標準ライブラリのようなものを提供することである.
CommmonJS定義のモジュールは、{モジュール参照}{モジュール定義}{モジュール識別子}に分けられています.
require()は外部モジュールを導入するために使用されます.exportオブジェクトは、現在のモジュールの方法または変数を導出するために使用され、唯一の出口です.moduleオブジェクトはモジュール自体を表します.
NodeはCommon JSの規範に従っていますが、比較してもいくつかの取捨選択をして、新しいものを記入しました.
でも、Common JSを言ってもNodeを言ったら、NPMのことを先に知るべきだと思います.NPMはNodeのカバンマネージャとして、Nodeに依存しているカバンの設置問題を解決するためではないですか?それならCommunJS規格にも従っていますよ.カバンの規格(それとも理論)に従います.
Common JS WIKIはその歴史を語り、modulesやpackagesなども紹介した.
二、AMD
Common JSは主にJSのバックエンドでの表現のために制定されています.彼はフロントエンドにふさわしくないです.なぜこう言いますか?
これはブラウザ側のjsとサーバー側のjsが主にどのようなことをしているかを分析する必要があります.何か違いがありますか?
そこで、AMD(非同期モジュール定義)が現れ、主に先端JSの表現に関する仕様を定めた.
AMDは一つのインターフェースしかありません.define(id?dependencies?factory);
これは声明モジュールの時にすべての依存(dep)を作成し、また形参としてfactoryに伝えます.
RequireJSはAMD仕様を実現しましたね.
これはAMDのWIKI中国語版があります.詳しいことをたくさん話しています.使う時には、AMDのWIKI中国語版を見ることができます.
三、CMD
有名な玉伯はseajsを書いています.彼の出したCMD規格に従って、AMDとかなり近いです.でも、使ってみたらもっと便利になります.一番重要なのは中国語版です.全部持っています.seajsオフィシャルdoc.
前にAMDと言っていましたが、RequireJSがAMDを実現したと言いました.CMDはAMDと似ているように見えますが、RequireJSはSeaJSと似ていませんか?
CMDとAMDは似ていますが、違いはかなりはっきりしています.公式以外の公式には説明と理解があります.いいと思います.
公式はSeaJSとRequireJSを詳しく述べています.
SeaJSとRequireJSの最大異同(これもいいです.)
一、Common JS
Common JSはJSの表現のために規範を制定して、NodeJSはこのような規範の実現で、webpackもCommonJSの形式で書きます.jsはモジュールの機能がないので、CommunJSが生まれました.jsはどこでも運行してほしいです.ブラウザだけではないです.その究極の目標はPython、Ruby、Java標準ライブラリのようなものを提供することである.
CommmonJS定義のモジュールは、{モジュール参照}{モジュール定義}{モジュール識別子}に分けられています.
require()は外部モジュールを導入するために使用されます.exportオブジェクトは、現在のモジュールの方法または変数を導出するために使用され、唯一の出口です.moduleオブジェクトはモジュール自体を表します.
NodeはCommon JSの規範に従っていますが、比較してもいくつかの取捨選択をして、新しいものを記入しました.
でも、Common JSを言ってもNodeを言ったら、NPMのことを先に知るべきだと思います.NPMはNodeのカバンマネージャとして、Nodeに依存しているカバンの設置問題を解決するためではないですか?それならCommunJS規格にも従っていますよ.カバンの規格(それとも理論)に従います.
Common JS WIKIはその歴史を語り、modulesやpackagesなども紹介した.
二、AMD
Common JSは主にJSのバックエンドでの表現のために制定されています.彼はフロントエンドにふさわしくないです.なぜこう言いますか?
これはブラウザ側のjsとサーバー側のjsが主にどのようなことをしているかを分析する必要があります.何か違いがありますか?
そこで、AMD(非同期モジュール定義)が現れ、主に先端JSの表現に関する仕様を定めた.
AMDは一つのインターフェースしかありません.define(id?dependencies?factory);
これは声明モジュールの時にすべての依存(dep)を作成し、また形参としてfactoryに伝えます.
1 define(['dep1','dep2'],function(dep1,dep2){...});
依存性がないなら、簡単なモジュールを定義して、次のようにすればいいです.1 define(function(){
2 var exports = {};
3 exports.method = function(){...};
4 return exports;
5 });
あれ、ここにdefineがあって、ものを包装して、Nodeの実現の中でどうしてdefineキーワードがあることを見ていませんか?RequireJSはAMD仕様を実現しましたね.
これはAMDのWIKI中国語版があります.詳しいことをたくさん話しています.使う時には、AMDのWIKI中国語版を見ることができます.
三、CMD
有名な玉伯はseajsを書いています.彼の出したCMD規格に従って、AMDとかなり近いです.でも、使ってみたらもっと便利になります.一番重要なのは中国語版です.全部持っています.seajsオフィシャルdoc.
1 define(function(require,exports,module){...});
seajsを使ったことがありますよね.これはよく知らないでしょう.前にAMDと言っていましたが、RequireJSがAMDを実現したと言いました.CMDはAMDと似ているように見えますが、RequireJSはSeaJSと似ていませんか?
CMDとAMDは似ていますが、違いはかなりはっきりしています.公式以外の公式には説明と理解があります.いいと思います.
公式はSeaJSとRequireJSを詳しく述べています.
SeaJSとRequireJSの最大異同(これもいいです.)