尽管注释和装饰符在Angular中都共享相同的@符号,但它们都是不同的语言功能。
注释:这是硬编码语言功能。注释仅是在类上设置的用于反映元数据库的元数据。当用户为一个类添加注释时,编译器会在该类上创建一个称为注释的属性,在其中存储一个注释数组,然后尝试实例化一个与注释同名的对象,并将元数据传递给构造函数。注释不是AngularJ中预定义的,因此我们可以自己命名。
- 例子:
@ComponentAnnotation
注释功能:
- 注释是硬编码的。
- 注释由AtScript和Traceur编译器使用。
- 批注反映元数据库
注意:如今,AngularJs已从AtScript切换为TypeScript,但如今也支持注释。
示例:此处组件被标注为ComponentAnnotation并被进一步使用。
import {
ComponentAnnotation as Component,
} from '@angular/core';
export class ComponentAnnotation extends DirectiveMetadata {
constructor() {
}
}
装修:装饰器是添加的元数据的一类,它的成员,或它的方法的参数的函数。装饰器只是使您能够访问需要装饰的目标的函数。有四种类型的装饰器,以下均提到:
装饰器类型:
- 类装饰器,例如@ Component,@ NgModule
- 属性装饰器,例如@Input和@Output
- 方法装饰器,例如@HostListener
- 参数修饰符,例如@Injectable
装饰器的特点:
- 装饰器是在AngularJs中预定义的。
- 装饰器由TypeScript编译器使用。
- 装饰器用于将元数据附加到类,对象和方法。
例子:
import { Component } from '@angular/core';
@Component({
selector: 'hi',
template: 'GeeksForGeeks',
})
export class Geeks{
constructor() {
console.log('GeeksForGeeks');
}
}
注释和装饰器之间的区别:
Annotation | Decorator |
---|---|
Used by Traceur compiler | Used by Typescript compiler |
Annotations are only metadata set on the class using the Reflect Metadata library. | Decorator corresponds to a function that is called on the class. |
Annotations are used for creating an attribute annotations that stores array. | Decorator is a function that gets the object that needs to be decorated. |
They are Hard-coded | They are not Hard-coded |
Exp. Imports for Annotations: import {ComponentAnnotation as Component} from ‘@angular/core’; | Exp. Imports for Decorators: import {Component} from ‘@angular/core’; |
结论: AngularJS中的Annotations和Decorators之间存在非常显着的差异。装饰器和注释均受Angular支持。这是一件遗留的事情,因为Angular2从AtScript转换为TypeScript。装饰器是AngularJ中的默认设置,但您也可以使用注释。