Ответ 1
Взаимодействие с Js началось с пакета : js. Он был построен с использованием window.postMessage.
Позже был добавлен dart: js, чтобы повысить производительность и уменьшить размер скомпилированного файла js. В основном целью были:
- удаление областей и ручное управление жизненным циклом
- избегая noSuchMethod, чтобы размер компиляции был как можно меньше
- переименование объектов, чтобы сделать API более понятным
Как только dart: js был готов, package: js был переписан для использования dart: js под обложкой.
package: js предоставляет более простой Api, который достигается за счет увеличения размера js (потому что package: js использует dart: mirrors и noSuchMethod).
Вот то же самое, что и с пакетом: js и dart: js:
import 'package:js/js.dart' as js;
main() {
var pixi = new js.Proxy(js.context.PIXI.Stage, 0xffffff);
var renderer = js.context.PIXI.autoDetectRenderer(400, 400);
document.body.append(renderer.view);
}
import 'dart:js' as js;
main() {
var pixi = new js.JsObject(js.context['PIXI']['Stage'], [0xffffff]);
var renderer = js.context['PIXI'].callMethod('autoDetectRenderer', [400, 400]);
document.body.append(renderer['view']);
}