きれいになるのかなぁっと思う書き方を纏めてみた。
javascriptを分業して実装していると、変数名の重複に
注意しなければならないが、名前空間を用いれば気にする
必要がなくなる。クロージャの応用っぽい感じ。
また関数定義やオブジェクト定義、クラス定義など
用途によって使いわける。
prototype.jsやJQueryを使用する場合は、また
ちょっと変わってくるかな。。
▼ config.jsで名前空間と定数定義
var NMSP = {};
NMSP.common = {}; // 共通処理用
NMSP.config = {}; // 定数定義用
NMSP.xxx1 = {}; // 以下用途に合わせて menuやvalidateなど。
NMSP.xxx2 = {};
NMSP.xxx3 = {}; 
// 定数定義
NMSP.config.AAA      = "aaa";
NMSP.config.BBB      = "bbb";
NMSP.config.CCC      = "ccc";▼ common.jsで関数定義 共通処理とか
(function() {
    
    var xxxArray = [];
    
    function hogefunc1(arg) {
        //処理
    }
        
    function hogefunc2(arg1, arg2) {
        //処理
    }    
    
    function hogefunc3(arg1, arg2) {
        //処理
    }
    
    // 名前空間へのエクスポート
    NMSP.common.hogefunc1 = hogefunc1;
    NMSP.common.hogefunc2 = hogefunc2;
    NMSP.common.hogefunc3 = hogefunc3;
    
})();▼ hoge1.jsで関数定義
(function() {
    var initObj = {};
    var initWidth = 100;
    var initHeight = 100;
    
    function hogefunc1() {
        //処理
    }
    // 名前空間へのエクスポート
    NMSP.xxx1.hogefunc1 = hogefunc1;
})();▼ hoge2.jsでクラス定義
// オブジェクト指向に向いている部品の場合はクラスを使用
(function() {
    /**
     *  コンストラクタ
     */
    function Hoge(arg1, arg2, arg3) {
        this.arg1 = arg1;
        this.arg2 = arg2;
        this.arg3 = arg3;
        this._initXxx();
    }
    /**
     *  初期処理
     */
    Hoge.prototype._initXxx = function() {
        // 処理
    }
    /**
     * 実行
     */
    Hoge.prototype._execXxx = function() {
       // 処理
    }
    
    // 名前空間へのエクスポート
    NMSP.xxx2.Hoge = Hoge;
})();▼ hoge3.jsでオブジェクト定義
NMSP.xxx3 = {
  
  hogefunc1 : function(arg) {
      
  },
  
  hogefunc2 : function(arg) {
      
  },
  
  hogefunc3 : function(arg1, arg2) {
      
  },
  
};▼ hoge4.jsでオブジェクト定義 別の名前空間を使用
if (typeof(NMSP2) == 'undefined') {
  NMSP2 = {};
}
if (typeof(NMSP2.xxx) == 'undefined') {
  NMSP2.xxx = {};
}
MSP2.xxx = {
  
  hogefunc1 : function(arg) {
      
  },
  
  
  hogefunc2 : function(arg) {
      
  },
  
  hogefunc3 : function(arg1, arg2) {
      
  },
  
};▼ hoge5.jsでオブジェクト定義 別の名前空間を使用
// 上記とちょっと違う書き方だが好みの問題
if (typeof(NMSP3) == 'undefined') {
  NMSP3 = {};
}
if (typeof(NMSP3.xxx) == 'undefined') {
  NMSP3.xxx = {};
}
NMSP3.xxx.hogefunc1 = function (arg1, arg2) {
};
NMSP3.xxx.hogefunc2 = function (arg1, arg2) {
};
0 件のコメント:
コメントを投稿