2017-02-21 1 views
0

디렉토리 내 모든 데코레이터를 가져올 수 있습니까? 나는 주석을 사용하는 심포니에서와 동일한 방식으로 작동하는 라우팅 구성 요소를 구현하고 싶습니다 : 내 응용 프로그램을 시작할 때모든 데코레이터 받기

@Route("/") 
public function index() { // ... 

그래서 나는 모든 주석을 발견하고 그것의 나의 경로를 만들어야합니다. 이것이 가능한가?

편집 : 명확히하기 위해 : 나는 NodeJS 응용 프로그램에 대해 이야기하고 있습니다. 디렉토리의 모든 파일을 반복하고 모든 데코레이터를 찾고 싶습니다.

+1

"디렉토리에있는 모든 데코레이터 가져 오기"란 무엇을 의미합니까? 특정 dir에있는 모든 파일을 반복하고 파일마다 데코레이터를 확인 하시겠습니까? 이것도 노드 응용 프로그램이나 브라우저 중 하나입니까? –

+0

그래, 디렉토리의 모든 파일을 반복하고 데코레이터를 확인하는 것은 내가 원하는 것입니다. 그리고 우리는 NodeJS 앱에 대해 이야기하고 있습니다. – nehalist

답변

0

fs을 사용하여 파일을 찾고/연 다음 직접 구문 분석하거나 Compiler API을 사용해야합니다. 그 둘 중 어느 것도 재미 있지는 않습니다. 이 Route 장식이 제 3 자 당신의 일부가 아닌 경우

const REGISTRY = new Map<string, Function[]>(); 
export function Route(path: string) { 
    if (!REGISTRY.has(path)) { 
     REGISTRY.set(path, []); 
    } 

    return (constructor: Function) => { 
     REGISTRY.get(path).push(constructor); 

     // do what ever the decorator does 
    } 
} 

:

대안은 (내가 시나리오를 이해하는 경우), 같은 것을 데코레이터를 호출하는 각 구성 요소를 등록하는 것입니다 그런 다음 원래의 것을 호출하는 자신의 데코레이터를 사용하십시오.

+0

이것은 충분해야합니다, 고마워요 :) – nehalist