在 Dart 文档中的任何地方都建议使用 js
用于 JavaScript 互操作性的包。
然而,我最近发现dart:js
SDK 中存在的软件包似乎具有相似(但不相同)的界面。
这些包之间有什么区别吗?它们的功能是否相同?推荐哪一款?
最佳答案
Js 互操作始于 package:js .它是用 window.postMessage 构建的.
以后 dart:js已添加以提供更好的性能并减小编译后的 js 文件的大小。基本上目标是:
一旦 dart:js 准备就绪,package:js 就被重写为在掩护下使用 dart:js。
package:js 提供了一个更简单的 Api,但代价是增加了 js 的大小(因为 package:js 使用了 dart:mirrors 和 noSuchMethod)。
这是使用 package: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']);
}
关于dart - Dart :js and js package? 和有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19451731/