2015-05-13 8 views
6

Kann mir jemand sagen. Das Symbol '@' vor der importierten Komponentenfunktion. Ist das ES6 Syntax? Ich habe es nicht bei anderen nicht eckigen ES6-Projekten gesehen, die ich mir angeschaut habe.Gehört die Angular 2 @Component-Syntax zu ES6?

import {Component} from ... 
@Component({}) 

Here is a example

+1

Nicht, dass ich es wissen würde. Können Sie bitte auf die Dokumente zeigen? Was tut es? – Bergi

+0

Ich fand das auch ... Anmerkungen sind eine Möglichkeit, Meta-Informationen zu unserem bestehenden Code hinzuzufügen. Diese Anmerkungen werden von ES6 nicht unterstützt, wurden jedoch als Spracherweiterung entwickelt und werden vom Traceur-Transpiler berücksichtigt, der in diesem Projekt verwendet wird. Wir müssen jedoch keine Anmerkungen verwenden. Wie bereits erwähnt, werden diese nur nach ES5 transpiliert und dann einfach vom Framework verwendet. http://blog.Thoughtram.io/angular/2015/03/27/building-a-zippy-component-in-angular-2.html – screenm0nkey

Antwort

5

Kurze Antwort: Nein.

Die @ Syntax definiert eine Anmerkung - diese AtScript, durch Schräg Jahren eingeführt wurde, die später in TypeScript verschmolzen. Von dem, was ich sehen kann, sind sie Annotationen in .NET-Sprachen ähnlich.

Anmerkungen gehören nicht zum Standard ES6; Sie sind einfach eine Dekoration, die von TypeScript bereitgestellt wird. Hingegen unterstützt Angular 2 die Verwendung von TypeScript-Annotationen, ebenso wie Aurelia.

Ich kann im Moment keinen Link bereitstellen, aber es gibt Ressourcen, die die Features und Sprachkomponenten von ES6 sehr detailliert beschreiben.

18

Die Syntax @ ist Teil eines neuen Entwurfs für es7, der sich derzeit in Stufe 1 befindet (Vorschlagsphase). Sie werden Decorators genannt.

Dekoratoren ermöglichen das Kommentieren und Ändern von Klassen und Eigenschaften zur Entwurfszeit.

Weitere Informationen finden Sie unter: https://github.com/wycats/javascript-decorators


Hinweis: Sie Dekorateure verwenden können, mit Babel durch die Aktivierung des optional[]=es7.decorators (in webpack) oder durch Ihre Konfiguration stage:1

5

Gerade für die Einstellung In Records können Sie dasselbe Verhalten in ES6 erreichen, indem Sie einfach die TypeScript-Annotation in Folgendes umwandeln:

import {Component, ...} from 'angular2/core'; 
export class myAppOrDirective { 
    static get annotations() { 
     return [ 
      new Component({ 
       selector: 'my-app-or-directive' 
      }), 
      new View({ 
       template: `<div>Hello!</div>` 
      }) 
     ]; 
    } 
}