JavaScriptのモジュール化開発について
5980 ワード
一体何がモジュール化されていますか?
今はbackbone、emberjs、spinejs、batmanjsなどのMVCフレームに侵入してきました.Common JS、AMD、NodeJS、RequireJS、SeaJS、curljsなどのモジュール化されたJavaScriptが顔を出してきます.webの先端はすでに大きな先端に変化しており、webの先端の発展速度は速い.モジュール化は、システムを独立した機能部分に分離する方法であり、システムを独立した機能部分に分割し、モジュールインターフェース、モジュール間の透明性を厳格に定義することができる.javascriptのモジュールはC、PHP、javaの中でよく見られます. cにincludeを使用して含む.hファイル. phpにrequire_を使用します.onece包含.phpファイル javaはimportを使ってパッケージを導入します. モジュール化のメリットとデメリット
利点:
メンテナンス性1.フレキシブルアーキテクチャ、焦点分離2.モジュール間の組み合わせ、分解に便利3.単一モジュールの機能調整、アップグレードに便利4.複数人の協力が相互に干渉しないテスト性1.ユニット別テストが可能です.
短所:
性能損失1.システム階層で、呼び出しチェーンが長い2.モジュール間通信で、モジュール間でメッセージを送信すると、性能が消耗します.
参照モジュールのいくつかの方法
モジュールモード1.匿名のクローズド関数
1.com mmonJs
CommunJSモジュールは、あるオブジェクトをエクスポートして、他のモジュールにrequire文で導入することができます.Node.jsを書いたらこれらの文法をよく知っているはずです.
Common JSを通じて、各JSファイルは独立してそのモジュールの内容を格納します.このような作用領域では、対象をモジュールとしてmodule.export文で導出し、require文で導入します.グローバル名前空間汚染を避ける コード間の依存関係を明確にする 気をつけてcommmonJsモードを使って、サーバー優先のモードでモジュールを同期してロードします.もし3つのモジュールをロードするなら、この3つのモジュールは一つ一つ順番にロードします.欠点はブラウザ側にあまり友好的ではないです.彼がモジュールをロードしている限り、ページはモジュールロードが完了するまでずっと押さえられます.
2.AMDモード
CommunJSはもういいですが、もし私たちが非同期ローディングモジュールを実現したいなら、どうすればいいですか?答えはAynchronous Module Definition(非同期モジュール定義規範)です.AMDと略称します.
AMDを通してモジュールのコードをロードすると、普通こう書きます.
3.UMDモード
UMDは二つの仕様を同時に使用する方法を作成し、グローバル変数定義もサポートします.したがって、UMDのモジュールは、クライアントとサービス端末で同時に使用することができる.私も使ったことがないので、ここで詳しく紹介しません.
RequireJsフレームワーク
RequireJSは非常に小さいJavaScriptモジュールのロードフレームであり、AMD仕様の最高の実現者の一つである.
基本的なappi equireは3つの変数を定義します.define、require、requirejs、その中のrequire==requirejsは、requireを使うのが一般的です. defineは名前からこのアプリがモジュール を定義するために使われていることが分かります. requireは依存モジュールをロードし、負荷完了後のコールバック関数 を実行する.
明日はもっと続きます.
今はbackbone、emberjs、spinejs、batmanjsなどのMVCフレームに侵入してきました.Common JS、AMD、NodeJS、RequireJS、SeaJS、curljsなどのモジュール化されたJavaScriptが顔を出してきます.webの先端はすでに大きな先端に変化しており、webの先端の発展速度は速い.モジュール化は、システムを独立した機能部分に分離する方法であり、システムを独立した機能部分に分割し、モジュールインターフェース、モジュール間の透明性を厳格に定義することができる.javascriptのモジュールはC、PHP、javaの中でよく見られます.
利点:
メンテナンス性1.フレキシブルアーキテクチャ、焦点分離2.モジュール間の組み合わせ、分解に便利3.単一モジュールの機能調整、アップグレードに便利4.複数人の協力が相互に干渉しないテスト性1.ユニット別テストが可能です.
短所:
性能損失1.システム階層で、呼び出しチェーンが長い2.モジュール間通信で、モジュール間でメッセージを送信すると、性能が消耗します.
参照モジュールのいくつかの方法
モジュールモード1.匿名のクローズド関数
(function () {
//
var name="xwk";
var age="23";
var say=function () {
return name+" "+age;
};
console.log(say())
}());
このような構造により、匿名関数は、親の役割領域であるグローバル内の変数にアクセスできないようにクローズドされています.利点は、グローバル変数を分離し、同名の汚染が発生しないことです.2.グローバル導入は上記の匿名クローズド関数と同じです.ただし、グローバル変数をパラメータとして関数に入力します.jqueryのパッケージはこのようになります.(function(globalVariable){
...
}
(globalVariable))
3.オブジェクトインターフェースvar globalObj=(function () {
return {
func1:function () {
return "r1";
},
func2:function () {
return "r2";
}
}
})();
console.log(globalObj.func1())
common JS&AMDモード1.com mmonJs
CommunJSモジュールは、あるオブジェクトをエクスポートして、他のモジュールにrequire文で導入することができます.Node.jsを書いたらこれらの文法をよく知っているはずです.
Common JSを通じて、各JSファイルは独立してそのモジュールの内容を格納します.このような作用領域では、対象をモジュールとしてmodule.export文で導出し、require文で導入します.
function module1() {
this.name=function () {
return "xwk";
};
this.age=function () {
return "23";
}
}
module.exports = module1;
引用するなら、requireだけが必要です.var m1=require("module1");
var module1=new m1();
module1.name();
module1.age();
この実装はモジュールモードより2つの利点があります.2.AMDモード
CommunJSはもういいですが、もし私たちが非同期ローディングモジュールを実現したいなら、どうすればいいですか?答えはAynchronous Module Definition(非同期モジュール定義規範)です.AMDと略称します.
AMDを通してモジュールのコードをロードすると、普通こう書きます.
define(["module1","module2"],function(module1,module2){
console.log(module.hello())
});
//define , ( , , [] ), ,
これらのモジュール自体もdefineで宣言する必要があります.例えばmodule 1モジュール:define([],function(){
return {
func1:function () {
return "r1";
},
func2:function () {
return "r2";
}
}
});
非同期ローディング以外にも、AMDのもう一つの利点は、モジュール内でオブジェクト、関数、コンストラクション、文字列、JSONまたは他のデータタイプを使用することができますが、CommunJSはオブジェクトのみをサポートします.3.UMDモード
UMDは二つの仕様を同時に使用する方法を作成し、グローバル変数定義もサポートします.したがって、UMDのモジュールは、クライアントとサービス端末で同時に使用することができる.私も使ったことがないので、ここで詳しく紹介しません.
RequireJsフレームワーク
RequireJSは非常に小さいJavaScriptモジュールのロードフレームであり、AMD仕様の最高の実現者の一つである.
基本的なappi equireは3つの変数を定義します.define、require、requirejs、その中のrequire==requirejsは、requireを使うのが一般的です.
明日はもっと続きます.