📜  Angular中的Annotation和Decorator有什么区别?

📅  最后修改于: 2021-05-13 20:33:07             🧑  作者: Mango

尽管注释和装饰符在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中的默认设置,但您也可以使用注释。