私はdart2jsで自分の.dartファイルをコンパイルしますが、コンパイルされた.jsファイルには、私が見たくないコードが含まれています。ダーツはどのようにしてjavascriptにコンパイルされますか?ダーツはどのようにjavascriptにコンパイルされますか?
ダーツコード:
import 'dart:html';
void main() {
querySelector("#answer").onClick.listen(check);
}
void check(MouseEvent event){
var answer;
answer = (querySelector("#text_answer") as InputElement).value;
answer = answer.toUpperCase();
if (answer == "CHOCOLATE") {
querySelector("#text").text = "Smells like... you are right! Well, try to find somthing round, made of glass;)";
return;
} else {
querySelector("#text").text = "No, No, No. Try one more time. There’s white and milk and dark. These three types you might eat. As a type of candy, it really can’t be beat";
}
}
コンパイルの.jsコードが7000以上の行(コメントせず)を有しています。
あなたは何を見ることを期待していませんでしたか? –
'dart2js'というツールがコンパイラではないという問題があります。コンパイラは、より高いレベルのプログラミング言語からより低いレベルのプログラミング言語に翻訳します。しかし、Javasrcriptは低レベルのプログラミング言語ではありません。 dart2jsは蒸散器です(Google Dartの開発者がそのようなプロセスを翻訳ではなくコンパイルと呼んだ理由はわかりません)。この不正確さ(翻訳の代わりにコンパイル)は、誰かを誤解させるかもしれませんが(例えば、この質問の著者)、すべて正しいです.dartjsはコードを翻訳し、ランタイムライブラリコードを追加します。 – mezoni
技術的には、「コンパイラ」はある言語のプログラムを別の言語の意味的に同等のプログラムに変換します。プログラムを直接実行する「インタプリタ」とは区別されます。 "transpiler"は、通常、低レベルの機械語(assemebler、バイトコード、マシンコード)の代わりに別のユーザー書き込み可能言語(例えば、DartからJavaScriptへ)にコンパイルするためにのみ使用されるコンパイラの別の名前です。 。それでも、transpilersはコンパイラなので、dart2jsをコンパイラと呼ぶのは正しいです。 – lrn