Angular中的Annotation和Decorator之间有什么区别

Angular中的Annotation和Decorator之间有什么区别

虽然注释和装饰器在Angular中都有相同的@符号,但它们都是不同的语言特性。

注释:这些是硬编码的语言特征。注释只是在类上设置的元数据,用来反映元数据库。当用户注释一个类时,编译器会在该类上创建一个名为annotations的属性,在其中存储一个annotation数组,然后尝试实例化一个与注释同名的对象,将元数据传入构造函数。注释在AngularJs中没有预定义,所以我们可以自己命名它们。

  • 示例:
@ComponentAnnotation

注释的特点:

  • 注释是硬编码的。
  • 注释被AtScript和Traceur编译器所使用。
  • 注释反映元数据库

注意:现在AngularJs从AtScript切换到TypeScript,但现在也支持Annotations。

例子:这里组件被注释为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: '<div>GeeksForGeeks</div>',
})
export class Geeks{
  constructor() {
    console.log('GeeksForGeeks');
  }
}

注释和装饰器的区别:

注释 装饰器
被Traceur编译器使用 被Typescript编译器使用
注释只是使用Reflect Metadata库在类上设置的元数据。 装饰器对应于在类上调用的一个函数。
注释是用来创建一个存储数组的属性注释。 装饰器是一个获得需要被装饰的对象的函数。
它们是硬编码的 它们不是硬编码的
注释的进口:从’@angular/core’中导入{ComponentAnnotation as Component}; 装饰器的进口:从’@angular/core’中导入{Component}。

结论:AngularJS中的Annotations和Decorators之间有一个非常明显的区别。Angular支持Decorators和Annotations。这是一个传统的东西,因为Angular2从AtScript换成了TypeScript。Decorators在AngularJs中是默认的,但你也可以使用Annotations。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程