dart2js로 .dart 파일을 컴파일하지만 컴파일되지 않은 .js 파일에 예상치 못한 코드가 들어 있습니다. 다트는 어떻게 자바 스크립트로 컴파일합니까?다트는 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는 transpiler입니다 (Google Dart 개발자가 번역이 아닌 컴파일로 이러한 프로세스를 호출 한 이유를 알지 못합니다). 이 부정확성 (번역 대신 컴파일)은 오해의 소지가있는 사람 (예 :이 질문의 작성자)이 될 수 있지만 모든 것이 정확합니다. dartjs는 코드를 번역하고 런타임 라이브러리 코드를 추가합니다. – mezoni
기술적으로 "컴파일러"는 한 언어의 프로그램을 다른 언어의 의미 상 동일한 프로그램으로 변환합니다. 프로그램을 직접 실행하는 "인터프리터"와 구별됩니다. "transpiler"는 일반적으로 낮은 수준의 기계어 (assemebler, 바이트 코드, 기계 코드) 대신 다른 사용자가 쓸 수있는 언어 (예 : 다트에서 JavaScript)로 컴파일하는 데만 사용되는 컴파일러의 또 다른 이름입니다. . 그래도 변환기는 컴파일러이므로 dart2js를 컴파일러로 호출하는 것은 정확합니다. – lrn