课程名称: 晋级TypeScript高手,成为抢手的前端开发人才
课程章节: 10-2 【装饰器概述】装饰器定义,分类,要解决的问题
课程讲师: keviny79
课程内容:
1 装饰器定义:
装饰器就是一个方法或者叫函数,可以注入【写到】到类、方法、属性、参数,对象上,扩展其功能。
高阶组件本质上也采用了装饰器的思想。
2 装饰器要解决的问题:
装饰器就是解决在不修改原来类、方法,属性,参数的时候为其添加额外的功能。比如:为整个项目的所有业务类【假如50个类】的所有方法【假如6个方法】都增加日志信息,如果一个一个的增加,那要增加300次日志调用语句,假如日后日志文件格式发生了改变,也还需要修改300次。 如果有了装饰器,只需要修改一次就可以。这个属于项目中的通用功能,大家了解下即可,后面我们仿 Nestjs 实战 时对装饰器的这个特性会有很深的体会。
在 Nestjs 中 装饰器可以解决依赖注入的问题,而依赖注入是 Java等后端语言拥有的非常优秀的编程思想,
有了依赖注入,能大大降低项目的耦合度,大大提升项目的可扩展性。
使用和创建分离是依赖注入的核心思想。
3. 装饰器分类:
常见的装饰器:类装饰器、属性装饰器、方法装饰器、参数装饰器,元数据装饰器。
4. 元数据装饰器初步理解:
元数据装饰器:在定义类或者类方法或者对象的时候,可以设置一些元数据,我们可以获取到在类与类方法上添加的元数据,需要引入 reflect-metadata 第三方库 采用 @Reflect.metadata来实现。元数据指的是描述东西时用的数据,例如:Reflect.metadata(“importinfo”, “疫情期间用公筷,戴口罩”)。
5. 装饰器两种写法:
写法1:让调用时(使用时) 不传递参数的装饰器
写法2:装饰器工厂【让调用时 可以传递参数的装饰器】。
课程收获:
本讲对装饰器有了进一步的理解