1.0.0 • Published 4 years ago

@anfo/decorator-manager v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

自动生成decorator并将管理所有被标记的类和方法的信息

Install

npm i decorator-manager

const DecoratorManger = require('decorator-manager')

API

Constructor DecoratorManager()

Method register(decoratorName: string)

  • 注册后的decorator可以通过参数使用,也可以不通过参数使用

Method forEach(targetHandler: Function, methodHandler: Function)

遍历所有配置

  • targetHandler(target, config: Array, configs: Array): 处理装饰类的装饰器配置
    • target: 当前类的prototype
    • config: 该target的配置,按参数顺序为数组顺序
    • configs: 同manager.configs
  • methodHandler(target, name: string, config: Array, methodConfigs: Array: 处理装饰方法的装饰器配置

    • target: 当前类的prototype
    • name: 当前方法名
    • config: 该方法的配置,按参数顺序为数组顺序
    • methodConfigs: 当前类的全部装饰了装饰器的方法配置

Method getTarget(targetId: string)

Property get configs: Object

返回注册的decorators的使用情况

Property get methodConfigsKey: Symbol

Property get decorators: {string: Function}

Example

let manager = new DecoratorManager();

manager.register('router');
manager.register('loginCheck');
let {router, loginCheck} = manager.decorators;

@router('a', 'b')
class A{

    @loginCheck
    @router('c', 'd')
    a(){

    }
}
console.log(JSON.stringify(manager.configs));
/*
output:
{
    //targetId -- manager.getTarget(id) can get the target
    "719f5330-68f3-11ea-9c68-f16f400f393e": {
        "router": [
            "a",
            "b"
        ],
        "methodConfigs": {
            "a": {
                "router": [
                    "c",
                    "d"
                ],
                "loginCheck": true
            }
        }
    }
}
*/