2015-05-29 4 views
20

studiert ES6, JSPM & angular2 seit einer Woche und ich fand dieses Repo ES6-loaderKann mir jemand erklären, worum es bei es7 reflect-Metadaten geht?

, wenn wir an der index.html am unteren Skript aussehen werden Sie

System.import('reflect-metadata') 
    .then(function() { 
    return System.import('app/index'); 
    }) 
    .catch(console.log.bind(console)); 

sehen Dies ist mit JSPM des Systemjs Polyfill zu ES6 import erhalten.

Frage: Was tun die Reflect-Metadaten wirklich in dieser Situation? npm reflect-meta Je mehr ich die Dokumentation lese, desto weniger verstehe ich, was es tut?

+0

nicht sicher, was index.html Sie bedeuten, wenn es die https://github.com/angular/quickstart/blob/master/ ist index.html, dann ist die reflect-metadata/Reflect.js eine Bibliothek, die Folgendes verbessert: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect, die manchmal in verwendet wird der Code, den der TypeScript-Compiler (tsc) spuckt – dalvarezmartinez1

Antwort

43

'reflect-metadata' ist ein Paket, das ein Vorschlag für ES7 ist. Es ermöglicht, Metadaten in eine Klasse oder Funktion aufzunehmen; im Wesentlichen ist es syntax sugar.

Beispiel. Angular 2 ES6:

@Component({selector: "thingy"}) 
@View({template: "<div><h1>Hello everyone</h1></div>"}) 
class Thingy{}; 

Wie Sie sehen, gibt es keine Semikolons nach @Component und @View. Dies liegt daran, dass sie im Wesentlichen Ketten von (Meta) -Daten der Klasse sind.

können nun in Angular 2 bei gleichen Code aussehen, aber in ES5:

function Thingy(){} 
Thingy.annotations = [ 
    new angular.ComponentAnnotation({ 
     selector: "thingy" 
    }), 
    new angular.ViewAnnotation({ 

     template: "<div><h1>Hello everyone</h1></div>" 
    }) 
]; 

Wie Sie das @ -Symbol alot der Anmerkungen Eigenschaft einer Klasse abstrahiert aus sehen kann und macht es D.R.Y.

Der nächste Schritt Angular-Team weiß, dass Anmerkungen für den neuen Benutzer ein bisschen abstrakt sind. Außerdem ist der ES5 einfach zu ausführlich. weshalb sie a.js gemacht, was besser mit Anmerkungen Schnittstelle machen:

Video to understand this

+3

Große Antwort. Vielen Dank. –

+1

Was ist a.js? Mein Kommentar ist nicht lang genug –

+0

@gyozokudor a.js war ein Projekt für eckige 2 und es5. Es scheint, dass asif angular 2 Team dieses Projekt eingestellt haben könnte. –

Verwandte Themen