Подтвердить что ты не робот

Может ли кто-нибудь объяснить, что отражают метаданные es7?

Изучение ES6, JSPM и angular2 в течение недели, и я нашел этот репо ES6-загрузчик

если мы посмотрим на index.html внизу script, вы увидите

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

Это использует JSPM systemjs polyfill, чтобы получить ES6 import.

Вопрос: Что в действительности отражают метаданные? npm reflect-meta Чем больше я читаю документацию, тем меньше я понимаю, что она делает?

4b9b3361

Ответ 1

'reflect-metadata' - это пакет, который является предложением для ES7. Это позволяет включать метаданные в класс или функцию; в основном это синтаксический сахар.

Пример. Angular 2 ES6:

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

Как вы можете видеть, после @Component и @View нет точек с запятой. Это потому, что они являются по существу целями (мета) данных по классу.

Теперь рассмотрим тот же код в Angular 2, но в ES5:

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

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

Как вы можете видеть, символ @абстрагирует много свойств аннотаций класса и делает его более D.R.Y.

Следуя еще одному шагу Angular, команда знает, что аннотации немного абстрактны для нового пользователя. Более того, ES5 является слишком многословным. поэтому они сделали a.js, что улучшит взаимодействие с аннотациями:

Видео, чтобы понять это