1
我想弄清楚如何我可以使用變壓器爲我的Dart服務器應用程序。到目前爲止,我已閱讀https://www.dartlang.org/tools/pub/assets-and-transformers.html和https://www.dartlang.org/tools/pub/transformers/的文章,並使用該信息編寫以下變壓器。使用從酒吧運行變壓器輸出文件
import 'dart:async';
import 'package:barback/barback.dart';
class TestTransformer extends Transformer {
final BarbackSettings _settings;
TestTransformer.asPlugin(this._settings);
AssetId assetId;
Future<bool> isPrimary(AssetId id) {
assetId = id;
return new Future.value(id.toString().endsWith('.txt'));
}
apply(Transform transform) {
transform.primaryInput.readAsString().then((text) {
String output = text.toUpperCase;
print(output);
transform.addOutput(new Asset.fromString(assetId.addExtension('.upper'), output));
});
}
}
當我使用pub run
我看到變壓器運行,並如期print
線路輸出。我缺少的是* .txt.upper輸出文件。我無法在我的系統上找到這樣的文件。這個輸出在哪裏結束,我如何在代碼中使用它?通過使用我的意思是能夠讀取文件與File.open()
,如果輸出是一個DART文件,將其導入到另一個DART文件。
現在我更加困惑,正如我從'print'行可以看出'pub run'在大多數情況下運行我的變換器並處理文件。另外,爲了使用'pub run',我必須使用https://github.com/dart-lang/async_await變換器。異步/等待變換器在這種情況下如何工作? –
好問題。我不知道。幾個星期前,我與Dart團隊的一些成員進行了討論,在那裏簡要地提到變形器不支持服務器端代碼。可能是我誤解了一些東西。 –
https://github.com/dart-lang/async_await說:「這個轉換器對於用dart2js嘗試異步/等待很有用,Dart VM本身支持異步和等待,如果你正在編寫只在VM中運行的Dart代碼,你不需要這個變壓器。「因此僅適用於客戶端代碼。 –