2017-02-21 85 views
0

是否有可能獲取目錄中的所有裝飾器?我想實現路由組件,它的工作原理相同的方式在Symfony的,它使用註解:獲取所有裝飾器

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

於是開始了我的應用程序時,我需要找到所有的註釋和創建我的路出來。這可能嗎?

編輯:只是澄清:我在談論一個NodeJS應用程序。我想遍歷目錄中的所有文件並查找所有裝飾器。

+1

你是什麼意思「獲取目錄中的所有裝飾器」?你想遍歷特定目錄中的所有文件,然後每個文件檢查它的所有裝飾?這甚至是一個節點應用程序或瀏覽器嗎? –

+0

是的,遍歷目錄中的所有文件並檢查它的裝飾器正是我想要的。我們正在討論一個NodeJS應用程序。 – nehalist

回答

0

您需要查找/打開文件(使用fs),然後自己解析或使用Compiler API。這些聽起來都不那麼有趣。

的替代(如果我理解您的方案)是註冊一個調用裝飾的每個組件,是這樣的:如果這Route裝飾是不是你的,但是第三方的一部分

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