2013-06-13 2 views
1

상당히 큰 JavaScript 프로젝트를 시작하고 있습니다. 프로젝트는 하나 이상의 네임 스페이스 내에 모든 것을 갖게 될 것이기 때문에 전체 범위에 드문 드문 많은 수의 개체 만 존재할 것입니다 (현재로서는 단 한가지 만 존재합니다).다중 파일 JavaScript 프로젝트 구성 및 문서화

구성을 유지하기 위해 "모듈"대신 각 클래스를 다른 파일과 마찬가지로 자신의 파일에 보관하고 싶습니다.

하루 종일 단일 JavaScript 파일에 모든 파일을 컴파일하는 약간의 컴파일 스크립트 (NodeJS 포함)를 만들었습니다.

나는 좋은 방법이 있다고 생각했지만 JSDoc (3)을 나와 협력하고 많은 행운을 가지지 않으려 고 노력하고있어, 이것이 내가 잘못 생각한 것인지 궁금해하고있다. 방법이 없거나 JSDoc에서 어떤 트릭이있는 경우 빠졌습니다.

소스에서 각 네임 스페이스는 폴더이며 각 클래스는 같은 이름의 파일입니다. 함께 컴파일 할 때

var BaseNS = BaseNS || {}; 
BaseNS.SubNS = BaseNS.SubNS || {}; 

BaseNS.SubNS.MyClass = (function() { 
    function MyClass() { 
    } 

    Object.defineProperties(MyClass.prototype, { 
     'someProp', { 
      getter: function() { return this._someProp = this._someProp || 0; }, 
      setter: function(val) { this._someProp = val; } 
     } 
     // ... more 
    }); 

    MyClass.prototype.someMethod = function() {}; 
    // ... more 

    return MyClass; 
}}()); 

, 내 컴파일 스크립트가 올바른 순서로 클래스와도 제거 중복 된 네임 스페이스 선언 라인을 얻을 종속성을 처리합니다

각 클래스 파일은 다음과 같이 보인다.

이 방법은 비교적 깨끗하고 간단합니다. 잡힌 점은 JSDoc 문서를 어떻게 작성해야하는지 생각할 수 없다는 것입니다.

나는 "클래스와 비슷한"방식으로 가고 싶습니다. 이것은 실제로 DOM에서 크게 제거 된 응용 프로그램을위한 것입니다. 또한 전체 프로젝트를 바닐라, 현대 자바 스크립트 (예 : No RequireJS 등)로 변경하고 싶습니다.

아이디어를 얻는 방법이나 더 좋은 방법을 준비하고 싶습니다.

감사합니다.

답변

1

어제 약 4 시간 동안 여러 가지를 가지고 놀고 난 후에 최적의 형식을 알아 냈습니다. 최적의 형식은 좋은 형식을 결합한 반면 최소한의 주석은 적절하게 구문 분석 할 수 있습니다.

"use strict"; 

/** @namespace */ 
var NS = NS || {}; 

/** @namespace */ 
NS.Sub = NS.Sub || {}; 

/** 
* @class 
*/ 
NS.Sub.SomeClass = (function(NS) { 
    /** 
    * @constructor 
    * @lends NS.Sub.SomeClass 
    */ 
    var SomeClass = function() { 
     /** @method */ 
     this.someFunc = function(cookie) { 

     }; 

     Object.defineProperties(this, /** @lends NS.Sub.SomeClass */ { 
      /** 
      * @type {number} 
      * @instance 
      */ 
      somePublicProp: { 
       getter: function() { return this._somePublicProp || 24; }, 
       setter: function(val) { this._somePublicProp = val; } 
      } 
     }); 
    }; 

    return SomeClass; 
})(NS); 

아무에게도이 기능을 개선하는 방법에 대한 권장 사항이 있으면 그 내용을 듣고 싶습니다. 특히 var SomeClass; ... return SomeClass의 필요성을 없애는 방법을 찾아 낼 수 없습니다. 그냥 직접 (어떤 이름없이 선호) 직접 반환하고 싶습니다만, JSDoc은 더 많은 주석을 의미하는 내 메서드를 추적하지 못합니다. 이는 멋지지 않습니다.

관련 문제