react node helmet dependency npm ecmascript-6 jspm systemjs ecmascript-7

npm - node - ¿Alguien puede explicar de qué se trata el metadata reflect-es7?



react meta tags (1)

Llevo una semana estudiando ES6, JSPM y angular2 y encontré este repositorio ES6-loader

Si nos fijamos en el index.html en la secuencia de comandos inferior verá

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

Esto está utilizando el polyfill systemjs de JSPM para obtener la import de ES6.

Pregunta: ¿Qué hacen realmente los metadatos de reflexión en esta situación? ES6-loader Cuanto más leo la documentación, menos entiendo lo que hace.


''reflect-metadata'' es un paquete que es una propuesta para ES7. Permite que los metadatos se incluyan en una clase o función; En esencia se trata de la sintaxis del azúcar .

Ejemplo. Angular 2 ES6:

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

Como puede ver, no hay punto y coma después de @Component y @View. Esto se debe a que son esencialmente cadenas de (meta) datos en la clase.

Ahora veamos el mismo código en Angular 2 pero en ES5:

function Thingy(){} Thingy.annotations = [ new angular.ComponentAnnotation({ selector: "thingy" }), new angular.ViewAnnotation({ template: "<div><h1>Hello everyone</h1></div>" }) ];

Como puede ver, el símbolo @ abstrae una gran parte de la propiedad de anotaciones de una clase y la hace MÁS D.R.Y .

Yendo un paso más allá, el equipo de Angular sabe que las anotaciones son un poco abstractas para el nuevo usuario. Por otra parte, el ES5 es demasiado detallado. por eso hicieron a.js que hará que la interfaz con las anotaciones sea mejor:

Video para entender esto.