如何创建自定义Polymer和PolymerDart注释?

时间:2016-09-22 17:13:16

标签: annotations dart polymer dart-polymer

我正在研究PolymerDart以及可应用于dart文件的各种注释。无论如何:@Property@property@observe@reflectable@PolymerRegister,或@HtmlImport

所以,我开始研究Dart的概念以及如何为它们进行注释。我在stackoverflow上看到你可以做这样的事情。

class Datatable {
  final String name;
  const DataTable(this.name);
}

可以在构造函数中轻松地执行一些额外的信息。

class Datatable {
  final String name;
  const DataTable(this.name) {
    console.log("$name was referenced.");
  }
}

因此,我可以创建和实现我们可以利用的各种注释,但这是它开始变得可疑的地方。

我很好奇是否有办法为polymerdart创建注释?主要是锁定,或者可以创建一个简单函数的方法,甚至可以创建一个执行@Property(computed:"")功能的注释。

我想为我们的团队创建某种自定义项目。

为了记录,我知道我可以做类似

的事情
const myCustomAnnotation = const Property();

这将允许我这样做:

@myCustomAnnotation

我以为我可以做类似的事情:

class myCustomComputed extends Property {
  final String functionName;
  const myCustomComputed() : Property(computed: this.functionName);
}

允许我做类似的事情:

@myCustomComputed("testFunction(varA)")

1 个答案:

答案 0 :(得分:2)

这是一个很大的话题,但简单的回答是,是的,你所描述的在技术上是可行的,但不是微不足道的。

Dart注释在运行时通过反射可用,但在构建过程中最常由pub transformers使用。变换器的目的是在运行之前将资产(例如dart代码)修改为某种新形式。

上面提到的Polymer注释由Polymer transformer处理。这个变换器处理识别上面提到的注释并自动重写带注释的代码,以包括所有必要的实现和连线,使得一切都像我们期望的那样表现为Polymer元素。

因此,没有什么可以阻止您定义自己的注释和变换器,包括那些基于现有Polymer变换器的变换器,并将其打包以供您自己或他人使用。

我会注意到它是一个有点复杂的主题(参考聚合物变换器),似乎很少有简单的代码重写变换器示例可供构建。