Dart2js создает большие файлы javascript даже с небольшим кодом?

Я новичок в дартс и использую Dart Editor в Windows.

Я заметил, что мой скомпилированный javascript огромен, поэтому я продолжал удалять все больше и больше кода, чтобы увидеть, что его вызывает, но я не думаю, что что-то получаю. Вот моя программа прямо сейчас:

import 'dart:html';

void main() {
  var video = querySelector("#vid");
}

Это буквально так. Я удалил все, кроме одной инструкции.

И это созданный javascript (он не вписывается):

https://gist.github.com/DSteve595/504887a19a05614bcc94

Что я делаю не так? Эта программа практически пуста!


person Steven Schoen    schedule 14.01.2014    source источник


Ответы (2)


Файл, на который вы ссылаетесь в сути, имеет размер 48 КБ. Если вы запустите dart2js с параметром --minify, вы можете немного уменьшить размер.

Ваш код может быть тривиальным, но dart2js должен по умолчанию загружать значительное количество библиотек, а также импортировать dart:html библиотеку. Как вы думаете, насколько большим был бы ваш файл, если бы вы написали свою программу на JavaScript и импортировали весь jQuery?

Вы можете узнать больше о dart2js по адресу https://www.dartlang.org/docs/dart-up-and-running/contents/ch04-tools-dart2js.html.

person Shailen Tuli    schedule 14.01.2014
comment
Вы знаете, я даже не подумал, что JQuery больше не импортируется. Может быть, это не так уж и плохо. - person Steven Schoen; 15.01.2014

dart2js необходимо сгенерировать значительный объем кода для эмуляции поведения Dart в JavaScript. Типы, проверка ошибок, математика и т. д. — все это нужно эмулировать в JavaScript. Это приводит к большому количеству лишнего кода, и тривиальное приложение «Hello World» будет выглядеть чудовищно большим.

Вы можете уменьшить размер доставленного JavaScript, уменьшив его и заархивировав.

dart2js со временем становится лучше, но эмуляция поведения Dart в JavaScript всегда будет стоить дорого.

person Pixel Elephant    schedule 14.01.2014
comment
Итак, большая часть этого просто шаблон, от которого я не могу избавиться? Как насчет компилятора frogc, который, по-видимому, раньше был включен в Dart Editor? Похоже, код, созданный этим, был намного компактнее. - person Steven Schoen; 15.01.2014
comment
Верно. frog — старый компилятор, который не поддерживается, я бы не стал его использовать. По-видимому, лягушка не покрывала весь язык Dart, возможно, поэтому она была меньше. - person Pixel Elephant; 15.01.2014