Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dart:js和js包之间有什么区别?_Dart_Dart Js Interop - Fatal编程技术网

dart:js和js包之间有什么区别?

dart:js和js包之间有什么区别?,dart,dart-js-interop,Dart,Dart Js Interop,在Dart文档中,建议使用js包实现javascript互操作性 然而,我最近发现SDK中存在的dart:js包似乎具有类似(但不相同)的接口 这些包裹之间有什么区别吗?它们是否具有相同的功能?推荐哪一种?Js interop从开始。它是用石头建造的 添加了Later以提供更好的性能并减小已编译js文件的大小。基本目标是: 删除作用域和生命周期手动处理 避免使用noSuchMethod以尽可能降低编译大小 重命名对象以使api更易于理解 一旦dart:js准备好了,包:js就被重写为在封面下

在Dart文档中,建议使用
js
包实现javascript互操作性

然而,我最近发现SDK中存在的
dart:js
包似乎具有类似(但不相同)的接口

这些包裹之间有什么区别吗?它们是否具有相同的功能?推荐哪一种?

Js interop从开始。它是用石头建造的

添加了Later以提供更好的性能并减小已编译js文件的大小。基本目标是:

  • 删除作用域和生命周期手动处理
  • 避免使用noSuchMethod以尽可能降低编译大小
  • 重命名对象以使api更易于理解
一旦dart:js准备好了,包:js就被重写为在封面下使用dart:js

package:js提供了一个更简单的Api,其代价是增加js的大小(因为package:js使用dart:mirrors和noSuchMethod)

下面是对package:js和dart:js所做的相同操作:

将'package:js/js.dart'导入为js;
main(){
var pixi=new js.Proxy(js.context.pixi.Stage,0xffffff);
var renderer=js.context.PIXI.autodetectedrenderer(400400);
document.body.append(renderer.view);
}

将'dart:js'导入为js;
main(){
var pixi=new js.JsObject(js.context['pixi']['Stage'],[0xffffff]);
var renderer=js.context['PIXI'].callMethod('autoDetectRenderer',[400400]);
document.body.append(呈现程序['view']);
}

我在GitHub上收到了响应,但与此无关:

那个堆栈溢出注释已经过时了。更喜欢
package:js
-我们正在更新文档,以明确推荐。它不再通过
window.postMessage
(这是一个基于Dartium的解决方案)实现——它直接在编译器中处理,应该比
dart:js
更有效

资料来源: