2015-05-29 8 views
20

studiato ES6, JSPM & angular2 per una settimana e ho trovato questo repo ES6-loaderQualcuno può spiegare cosa sono esattamente i metadati di rispecchiamento di es7?

se guardiamo alla index.html allo script fondo vedrete

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

Questo sta usando JSPM di systemjs polyfill per ottenere gli import di ES6.

Domanda: Che cosa fanno realmente i metadati di riflessione in questa situazione? npm reflect-meta Più leggo la documentazione, meno capisco cosa fa?

+0

Non so cosa vuoi dire index.html, se è il https://github.com/angular/quickstart/blob/master/ index.html, quindi reflect-metadata/Reflect.js è una libreria che migliora: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect che viene usato a volte in il codice che il compilatore TypeScript (tsc) sputa – dalvarezmartinez1

risposta

43

'reflect-metadata' è un pacchetto che è una proposta per ES7. Permette di includere metadati in una classe o funzione; essenzialmente è syntax sugar.

Esempio. angolare 2 ES6:

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

Come potete vedere non ci sono punti e virgola dopo @Component e @View. Questo perché sono essenzialmente catene di (meta) dati sulla classe.

Vediamo ora che lo stesso codice nella angolare 2 ma in ES5:

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

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

Come si può vedere il simbolo @ astrae fuori un sacco di proprietà annotazioni di una classe e la rende più D.R.Y.

Facendo questo un ulteriore passo avanti, il team Angular sa che le annotazioni sono un po 'astratte per il nuovo utente. Inoltre, ES5 è semplicemente troppo prolisso. ed è per questo che hanno fatto a.js che renderà l'interfacciamento con annotazioni meglio:

Video to understand this

+3

Ottima risposta. Grazie. –

+1

Che cos'è a.js? Il mio commento non è abbastanza lungo –

+0

@gyozokudor a.js era un progetto per angular 2 ed es5. Sembra che la squadra di Asif angular 2 abbia interrotto questo progetto. –

Problemi correlati