gpt4 book ai didi

javascript - dart 最新的 js-interop 库最近引起了一些问题

转载 作者:行者123 更新时间:2023-11-29 14:54:48 26 4
gpt4 key购买 nike

我在最新的 js-interop 库中看到了一些奇怪的变化,我想知道是否有人可以对此做出一些澄清。

升级到最新版本后,我注意到 dart2js 不再工作了。经过一番调查后,我得出结论,原因是 js-interop 库中的 @proxy 注释(也提到了 here)。

正因为如此,我在几个版本之间切换,我注意到一些功能,如 scoped 在短短几天内就被弃用了,之后它就被完全删除了!如果您错过了此功能被标记为已弃用的中间版本,您会错过提供有关它的一些信息的提示。另请注意,dartlang.org 上关于 js 库的主要教程甚至没有暗示它的大部分内容已经过时。

我决定回到 0.0.26 版本,尽管它看起来像以前一样工作......我注意到在一个实例中,当从 dart 中的 javascript 上下文检索变量时,我收到了一个 dart DateTime 对象而不是 js。代理对象。

回退到更早的版本 (v0.0.25) 当使用来自 js 上下文的变量时,我回到了我的 js.Proxy,正如预期的那样。

奇怪的是 github版本一直到 0.0.25(按预期工作)和 pub 上的版本还有 3 个版本,它们都大大破坏了向后兼容性(有时需要这样做),但没有关于正在发生的事情的明确说明(我觉得这有点令人沮丧)。

有人可以澄清一下正在发生的事情以及我对 future 的期望吗?

http://pub.dartlang.org/packages/js

最佳答案

所有这些重大变化都已在 Future breaking changes in package:js 中公布。和 BREAKING CHANGE: package:js deprecated features removed .

基本上,从0.0.26开始,package:js现在用 dart:js 烘焙.这种变化带来了几件事:

  • 范围/保留/发布不再需要
  • 一些类型现在直接在 Dart 和 Js 之间传输,而不是代理
    • null, bool, num, String, DateTime
    • Blob
    • KeyRange
    • 图像数据
    • TypedData,包括它的子类,如 Int32List,但不包括 ByteBuffer
    • 节点
  • 现在也可以传输 shadow dom 中的元素
  • Callback 现在不再需要了。
  • 非常大的性能提升

这是一个快速迁移指南:

  • 范围:删除 js.retainjs.releasejs.scoped
  • new Callback.xxxx(f) 替换为 f 并删除 callback.dispose()
  • Proxy 替换为基于上述列表的可转移类型。

关于javascript - dart 最新的 js-interop 库最近引起了一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19798255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com