【问题标题】:Can anyone explain what es7 reflect-metadata is all about?谁能解释一下 es7 reflect-metadata 是什么?
【发布时间】:2015-08-12 21:50:20
【问题描述】:

学习 ES6、JSPM 和 angular2 一周了,我发现了这个 repo ES6-loader

如果我们查看底部脚本中的 index.html,您会看到

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

这是使用 JSPM 的 systemjs polyfill 来获取 ES6 的import

问题:在这种情况下,反射元数据的真正作用是什么? npm reflect-meta文档越读越不明白它的作用?

【问题讨论】:

标签: npm ecmascript-6 jspm systemjs ecmascript-2016


【解决方案1】:

'reflect-metadata' 是一个为 ES7 提议的包。它允许将元数据包含到类或函数中;本质上是syntax sugar

示例。 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>"
    })
];

如您所见,@ 符号抽象出了一个类的很多 annotations 属性,并使其成为更多 D.R.Y

更进一步,Angular 团队知道注解对于新用户来说有点抽象。此外,ES5 太冗长了。这就是他们制作a.js 的原因,这将使与注释的接口更好:

Video to understand this

【讨论】:

  • 很好的答案。谢谢。
  • 什么是a.js?我的评论不够长
  • @gyozokudor a.js 是 Angular 2 和 es5 的项目。似乎 Angular 2 团队可能已经停止了这个项目。
猜你喜欢
  • 2017-01-29
  • 2016-02-02
  • 1970-01-01
  • 2021-04-07
  • 2015-08-23
  • 1970-01-01
  • 2015-07-06
  • 2019-12-15
  • 1970-01-01
相关资源
最近更新 更多