2011-02-06 4 views
2

응용 프로그램을 재생하기 위해 모든 소스 파일을로드 할 필요가없는 시스템을 빌드하는 방법을 찾고 있습니다. 과거의 프로젝트에는 200 개가 넘는 .js 파일이있었습니다 (농담이 아닙니다!) 개발 한 기능을 테스트하기 위해 페이지를 다시로드하는 작업이 정말 느립니다.Factory 메서드의 반환 값을 올바르게 JsDoc 할 수 있습니까?

Dojo를 살펴본 결과 동적 로더를 어떻게 구축했는지 알 수있었습니다. 기본적으로 단일 코어 구성 요소를로드하면 필요한 경우 다른 모든 구성 요소가로드됩니다.

var user = MyApp.create('MyApp.model.User'); 

대신 : 나는 나 자바 스크립트에서 객체의 새로운 인스턴스를 생성 할 수 있습니다 내 응용 프로그램에서 팩토리 메소드 구현에 대해 생각하고

추론을 왜 좋겠 전 키워드 접근법을 사용하면 새로운 키워드가 이미 존재하지 않는다면 지연로드 방식으로 동적으로로드 할 수 있기 때문입니다. 팩토리 메서드는 대상 객체가 정의되어 있는지 여부 만 볼 수 있으며 그렇지 않은 경우로드합니다.

나는 그와 마주 오전 유일한 문제는 사실 IDE를 더 이상 user 확실히 좋은 일이 아니다 MyApp.model.User의 유형을 이해하지 않습니다.

이 딜레마를 해결할 방법이 있습니까? 여하튼 JsDoc을 공장 방법으로 사용할 수 있습니까?

답변

1

팩터 리 메소드가 인수를 기반으로 다양한 유형의 객체를 반환하면 IDE가 이해할 수있는 방식으로 팩토리 메소드 자체에 대한 반환 값을 문서화 할 수 없습니다 (@returns 사용). 적어도 나는 그것을 할 어떤 방법을 모르고있다.

그러나이 같은 개체를 보유하고있는 변수를 주석하여 쉽게 문제를 해결할 수 : 물론

/** 
* @type {MyApp.model.User} 
*/ 
var user = MyApp.create('MyApp.model.User'); 

, 내가 특정 IDE가 이것을 해석 할 수 있는지 알고하지 않습니다. 내 수 (코모도 사용).

+0

저는 오랫동안 그렇게 해왔습니다. 문제는 당신이 스스로 반복하고 있다는 것이며, 내가하고 싶은 것은 DRY (자신을 반복하지 말라는 것)입니다. 오브젝트를 생성하는 장소의 100에서 그것을 지정하는 대신, factory 메소드에서 한 번 지정하려고합니다. – Tower

+0

그러나 팩토리에서 해당 특정 유형을 반환하지 않는 경우 IDE에서 필요한 특정 반환 유형을 문서화 할 수 없습니다. 그렇게하면 그렇게 할 수 없습니다. 모든 유형의 객체에 대해 별도의 팩토리가 필요합니다. 아마도 원하는 것과 다를 수 있습니다. – hashchange

+1

확실히 할 수 있지만 현재 버전의 JsDoc에서는 불가능합니다. 공장을 문서화하는 방법이있을 수 있습니다. 이것은 IDE가 여러분이 팩토리에 전달한 문자열을 읽고 반환 된 객체가 그 것으로 가정한다는 것을 의미합니다. – Tower

관련 문제