我正在研究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:"")
功能的Annotation。我想为我们的团队创建某种定制。
作为记录,我知道我可以做类似的事情
const myCustomAnnotation = const Property();
这将允许我做:
@myCustomAnnotation
我当时以为可以做类似的事情:
class myCustomComputed extends Property {
final String functionName;
const myCustomComputed() : Property(computed: this.functionName);
}
让我做类似的事情:
@myCustomComputed("testFunction(varA)")
最佳答案
这是一个很大的话题,但是简短的答案是,是的,您描述的内容在技术上是可行的,但并非无关紧要。
Dart批注可在运行时通过反射获得,但pub transformers最常在构建过程中使用。转换器的目的是在运行前将 Assets (例如dart代码)修改为某种新形式。
您上面提到的Polymer注解由Polymer transformer处理。该转换器处理识别您上面提到的注释,并自动重写带注释的代码,以包括所有必要的实现和连接,从而使所有行为均像我们期望的Polymer元素一样。
因此,没有什么可以阻止您定义自己的注释和转换器,包括在现有的Polymer转换器上构建的注释和转换器,并将其打包以供您自己或他人使用。
我会注意,尽管这是一个比较复杂的主题(请参阅Polymer转换器),并且似乎没有几个简单的代码重写转换器示例可以以此为基础。
关于annotations - 如何创建自定义的Polymer和PolymerDart注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645080/