2011-03-01 4 views
38

에 자바 스크립트 네임 스페이스의 내가 그런 공간 있다고 가정 해 봅시다 :분할 여러 파일

var myNamespace = { 
    foo: function() { 
    }, 
    bar: function() { 
    } 
}; 

별도로 foobar을 정의 파일에이 코드를 분할하는 가장 좋은 방법은 무엇입니까?

로딩 시간이 걱정되지 않습니다. 배포하기 전에 파일을 다시 하나의 파일로 연결합니다.

+4

훌륭한 질문에 투표하십시오. 좋은 걸 가르쳐 줬어. –

+0

또한 언급 : http://stackoverflow.com/a/4130511/895245 –

답변

42

:

if(myNameSpace === undefined) { 
    var myNameSpace = {}; 
} 

파일 1 :

myNamespace.foo = function()... 

파일 2 이 패턴을 따르십시오 :

(function(nameSpace) { 
    nameSpace.foo = function() { ... }; 
})(window.nameSpace = window.nameSpace || {}); 

이렇게하면로드 순서는 중요하지 않습니다.

2

간단한은 다음과 같이 별도의 파일에 정의

파일 1 :

var myNamspace = {}; 

파일을 2 :

myNamespace.foo = function()... 

파일 3 :

myNamespace.boo = function()... 

은 그냥 확인 올바른 순서로 파일을로드하십시오. 각 파일에서

myNamespace.bar = function()... 
13
// File1: 
// top level namespace here: 
var myNamespace = myNamespace || {}; 

// File2: 
myNamespace.foo = function() { 
    // some code here... 
} 
1
(function (NS) { 
    NS.Uber = function Uber() { 
     this.super = new NS.Super(); // yes, it works! 
    }; // 
}(NS = NS || {})); 

// ------------- other file ----------------- 

(function (NS) { 
    NS.Super = function Super() { 
     this.uber = new NS.Uber(); // yes, it will also work! 
    }; // 
}(NS = NS || {})); 

// -------------- application code ------------ 

var uber = new NS.Uber(); 
console.log(uber.super); 

var super = new NS.Super(); 
console.log(super.uber); 
+0

NS = NS || {}는 NS를 인수로 보내고 존재하지 않으면 빈 객체를 NS에 할당 함을 의미합니다. – eavichay

+0

이것은 참조 오류를 유발합니다 : 줄은'} (NS = NS || {}));'[이 jsfiddle 예를보십시오] (http://jsfiddle.net/6cyrx3ad/) – Eregrith