我正在研究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)")
答案 0 :(得分:2)
这是一个很大的话题,但简单的回答是,是的,你所描述的在技术上是可行的,但不是微不足道的。
Dart注释在运行时通过反射可用,但在构建过程中最常由pub transformers使用。变换器的目的是在运行之前将资产(例如dart代码)修改为某种新形式。
上面提到的Polymer注释由Polymer transformer处理。这个变换器处理识别上面提到的注释并自动重写带注释的代码,以包括所有必要的实现和连线,使得一切都像我们期望的那样表现为Polymer元素。
因此,没有什么可以阻止您定义自己的注释和变换器,包括那些基于现有Polymer变换器的变换器,并将其打包以供您自己或他人使用。
我会注意到它是一个有点复杂的主题(参考聚合物变换器),似乎很少有简单的代码重写变换器示例可供构建。