2016-09-22 42 views
1

我正在對PolymerDart和可應用於dart文件的各種註釋進行一些研究。是它:@Property,@property,@observe,@reflectable,@PolymerRegister,或@HtmlImport如何創建自定義Polymer和PolymerDart註釋?

因此,我開始研究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."); 
    } 
} 

因此,我可以創建和實現各種可以利用的註釋,但這是它開始變得腥意的地方。

我很好奇,是否有方法爲聚合物分子創建註釋?大多數是鎖定的,或者可以創建一些簡單功能的方法,例如甚至可以:創建一個執行@Property(computed:"")功能的註釋。

我被要求爲我們的團隊創建某種定製。

爲了記錄在案,我知道我可以這樣做

const myCustomAnnotation = const Property(); 

這將允許我這樣做:

@myCustomAnnotation 

我想那我可以做類似這樣的:

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

允許我做這樣的事情:

@myCustomComputed("testFunction(varA)") 

回答

2

這是一個很大的話題,但簡要的回答是,是的,你所描述的在技術上是可行的,但不是微不足道的。

Dart註釋在運行時通過反射可用,但在構建過程中最常使用pub transformers。轉換器的目的是在運行前將資產(例如dart代碼)修改爲某種新形式。

上面提到的Polymer註釋由Polymer transformer處理。這個轉換器處理標識上面提到的註釋,並自動重寫帶註釋的代碼,以包含所有必需的實現和接線,使得所有的行爲都像我們期望的聚合物元素一樣。

因此,沒有什麼能夠阻止您定義自己的註釋和變形器,包括建立在現有聚合物變壓器上的注塑和變壓器,並將其封裝以供您自己或他人使用。

我會注意到它雖然有些複雜的話題(參考聚合物變壓器),似乎有幾個簡單的代碼重寫變壓器的例子,從中建立。

+0

那麼,我會以某種方式將註釋延伸到聚合物變壓器中?我不確定你是否可以編寫簡單的示例來展示概念驗證。否則,謝謝你的回答 – Fallenreaper

相關問題