谁能解释一下 es7 reflect-metadata 是什么意思?
Can anyone explain what es7 reflect-metadata is all about?
学习 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
。
问题:在这种情况下,reflect-metadata 到底做了什么? npm reflect-meta 越看文档越不明白它的作用?
'reflect-metadata'
是一个为 ES7 提案的包。它允许将元数据包含到 class 或函数中;本质上是 syntax sugar.
例子。
Angular 2 ES6:
@Component({selector: "thingy"})
@View({template: "<div><h1>Hello everyone</h1></div>"})
class Thingy{};
如您所见,@Component 和@View 之后没有分号。这是因为它们本质上是 class 上的(元)数据链。
现在让我们看看 Angular 2 中的相同代码,但在 ES5 中:
function Thingy(){}
Thingy.annotations = [
new angular.ComponentAnnotation({
selector: "thingy"
}),
new angular.ViewAnnotation({
template: "<div><h1>Hello everyone</h1></div>"
})
];
如您所见,@ 符号抽象出 class 的大量注释 属性 并使其变得更多 D.R.Y.
更进一步 Angular 团队知道注释对于新用户来说有点抽象。此外,ES5 过于冗长。这就是他们制作 a.js
的原因,这将使与注释的接口更好:
学习 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
。
问题:在这种情况下,reflect-metadata 到底做了什么? npm reflect-meta 越看文档越不明白它的作用?
'reflect-metadata'
是一个为 ES7 提案的包。它允许将元数据包含到 class 或函数中;本质上是 syntax sugar.
例子。 Angular 2 ES6:
@Component({selector: "thingy"})
@View({template: "<div><h1>Hello everyone</h1></div>"})
class Thingy{};
如您所见,@Component 和@View 之后没有分号。这是因为它们本质上是 class 上的(元)数据链。
现在让我们看看 Angular 2 中的相同代码,但在 ES5 中:
function Thingy(){}
Thingy.annotations = [
new angular.ComponentAnnotation({
selector: "thingy"
}),
new angular.ViewAnnotation({
template: "<div><h1>Hello everyone</h1></div>"
})
];
如您所见,@ 符号抽象出 class 的大量注释 属性 并使其变得更多 D.R.Y.
更进一步 Angular 团队知道注释对于新用户来说有点抽象。此外,ES5 过于冗长。这就是他们制作 a.js
的原因,这将使与注释的接口更好: