モジュール紹介第一章

1582 ワード

モジュール管理が必要な理由は、JavaScriptの発展がますます速くなり、それが生まれた時の自己位置付けを超えたからです.モジュール管理の概念がないので、大型プロジェクトやファイル組織をする時には、非常にもつれます.このように多くのモジュール管理ツールが生まれます.モジュール化の主な特徴は:
  • モジュール化、
  • を再利用できます.
  • には変数とfunctionが封入されています.全体のnamastpaceとは接触していません.
  • は、publicの利用可能な方法のみを暴露し、他のプライベート方法はすべて非表示
  • である.
    実装
    初級段階では、コードには様々な関数が溢れています.名前によって区別されます.function func 1(){}
      function func2() {}
    
    実際にこれらの関数はグローバル変数にマウントされています.使用時に直接呼び出すことができます.欠点は、グローバル変数を汚染しています.他のモジュールと変数名が衝突しないことを保証できません.また、モジュールメンバー間に直接関係が見えません.
    対象の書き方
    上記の汚染問題を解決したら、モジュールを一つの対象として作成できます.すべてのモジュールのメンバーはこの対象に入れます.
    var module1 = new Object({
        _count: 0,
        m1: function() {
            //...
        },
        m2: function() {
            //...
        }
      });
      //    
      var module2 = {
        _count: 0,
        m1: function() {
            //...
        },
        m2: function() {
            //...
        }
      }
    
    外部は変数名を定義することで、名前空間として機能しますが、同じ欠点があります.すべてのモジュールのメンバーが露出し、内部の状態は外部に書き換えられます.例えば、外部コードは直接に内部_を変えることができます.countの値
    すぐに関数(Immedia tely-Invoked Function Expression、IIIIIIIIIIIIIIIIIIIFCE)or匿名のクローズドを実行します.
    パラメータを送る必要がない場合や、特別に厳しい要求がない場合は、すぐに実行する関数を使用してもいいです.このインスタンスはメモリに一つのcopyしか存在しません.
        var module1 = (function() {    
        var _count = 0;    
        var m1 = function() {       //...
                };    
        var m2 = function() {       //...
                };    
        return {      
            m1: m1,
                  m2: m2    
        };  
    })();
    
    このようにプライベート変数はよく保護され、公開された方法はreturnによって設定されます.欠点もあります.動的に方法を追加する時は面倒です.しかも内部のプライベート変数を変更できません.
                          ...