2010-04-27 3 views
18

모듈 패턴을 사용하여 향후 프로젝트를보다 잘 구성하는 데 관심이 있습니다. 불행히도 모듈 패턴에 대한 간단한 자습서 및 개념 증명 예제 만 있습니다. 의 하위 섹션 또는 분기를큰 프로젝트에 모듈 패턴 사용하기

"프로젝트"내 글로벌 프로젝트 이름은, "팔"입니다
project.arm.object.method(); 

입니다 :

모듈 패턴을 사용하여, 나는 구조의이 종류에 프로젝트를 구성하고 싶습니다 프로젝트, "개체"는 개별 개체이며, 메서드와 속성에 대해서도 마찬가지입니다.

그러나 "프로젝트"에서 여러 개의 "팔"과 "개체"를 어떻게 선언하고 구성해야하는지 잘 모르겠습니다.

var project = window.project || {}; 
project.arm = project.arm || {}; 

project.arm.object = (function() { 

    var privateVar = "Private contents."; 

    function privateMethod() { 
     alert(privateVar); 
    } 

    return { 
     method: privateMethod 
    }; 

}()); 

복잡한 모듈 구조를 정의 할 때 모범 사례가 있습니까? 나는 그저 마지막에 새로운 팔/물체를 선언해야합니까?

답변

2

사람들이 선호하는 방식에는 많은 미묘한 차이가 있지만, 모듈 패턴 (명명 된 범위)을 호출하는 것의 주된 이점은 전역 네임 스페이스를 어지럽히 지 않는 것입니다. 다른 라이브러리 등을 가지고 오면 이름을 충돌을 피할 수 있습니다.

그 안에 이름과 중첩 된 범위를 구성하는 방법은 주로 개인적인 취향에 달려 있습니다.

3

Dojo의 dojo.declare는 상속과 프로토 확장을위한 컴팩트 한 표기법을 사용하여 생성자를 작성하고

때문에 이런 종류의 일을 위해 중대하다. 심지어 단지 보일러 플레이트 이런 종류의 제거를위한 경우도 정말 편리

: 당신은 그냥 그 기능을 원하는 경우에

var project = window.project || {}; 
project.arm = project.arm || {}; 

을, 당신은 dojo.setObject을 사용할 수 있지만 물론, 뭔가를 작성하면 할 똑같은 것도 사소한 일이다.

dojo.setObject("project.arm.object" (function() { 
    var privateVar = "Private contents."; 

    function privateMethod() { 
     alert(privateVar); 
    } 

    return { 
     method: privateMethod 
    }; 
}())); 

나는 최근에 큰 자바 스크립트 프로젝트 (86 개 파일, 7K + 라인 (주석과 공백 라인)은 제외) dojo.declare/dojo.setObject을 사용, 당신이 특히, 모든 조직 및 관리 유지하는 바람이었다 포함기구는 dojo.requiredojo.provide입니다.

관련 문제