2017-02-21 77 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