나는 다트 서버 애플리케이션에 트랜스포머를 어떻게 사용할 수 있는지 알아 내려고하고 있습니다. 지금까지 나는 https://www.dartlang.org/tools/pub/assets-and-transformers.html과 https://www.dartlang.org/tools/pub/transformers/에있는 기사를 읽고 그 정보를 사용하여 다음과 같은 변환기를 작성했습니다. 내가 pub run
를 사용하는 경우펍 실행에서 트랜스포머 출력 파일 사용
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));
});
}
}
나는 변압기 실행을 참조하고, print
라인 출력은 예상대로. 제가 누락 된 것은 * .txt.upper 출력 파일입니다. 내 시스템 어디에서나 그런 파일을 찾을 수 없습니다. 이 출력은 어디에서 끝나고 코드에서 어떻게 사용할 수 있습니까? 사용하는 의미는 File.open()
으로 파일을 읽을 수 있고, 출력이 다트 파일이면 다른 다트 파일로 가져올 수 있습니다.
이제'print' 라인에서 'pub run'이 내 변압기를 실행하고 파일을 처리하는 것을 확실히 알 수 있기 때문에 더욱 혼란 스럽습니다. 또한'pub run'을 사용하기 위해서는 https://github.com/dart-lang/async_await 변환기를 사용해야합니다. 이 문맥에서 비동기/대기 변압기는 어떻게 작동합니까? –
좋은 질문입니다. 나는 모른다. 몇 주 전에 Dart 팀의 일부 구성원과 토론을 가졌습니다.이 단원에서는 변압기가 서버 측 코드에서 지원되지 않는다고 간단히 언급했습니다. 내가 뭔가 잘못 해석 한 것일 수도 있습니다. –
https://github.com/dart-lang/async_await는 "이 변환기는 dart2js로 비동기식/대기식으로 시도 할 때 유용합니다 .Dart VM은 기본적으로 비동기식 및 대기식을 지원합니다 .VM에서만 실행되는 다트 코드를 작성하는 경우, 당신은이 변압기가 필요하지 않습니다. " 따라서 클라이언트 측 코드에만 해당됩니다. –