【问题标题】:Calling Dart from Javascript从 Javascript 调用 Dart
【发布时间】:2018-06-22 17:52:08
【问题描述】:

如何让 dart to js 编译器将 dart api 导出到 js,并从原始 dart api 直接映射到转译产生的 js api?

目的只是在dart中写一个库,从js中使用。

从 dart 调用 js 没有问题。但是,我的问题涉及互操作。目前我找不到任何库或文档作为该问题的解决方案。在 dart:js 和 package:js 库的文档中明确指定互操作只能以一种方式工作。

有不恰当的解决方案来实现互操作的其他方式,但只能通过 hack。例如Calling Dart code from javascript 强制以一种受互操作库限制的方式而不是开发人员的意图来传递和返回函数。

明确地我不鼓励像https://stackoverflow.com/a/45883551 这样的解决方案作为答案,因为它是一个灵活但不是标准的解决方案。出于某些目的,建议在原始 API 和转译 API 之间建立标准映射。而且引用的答案相当复杂。

这意味着即使是“I N T E R”这个术语也可能是错误的,因为它暗示了两种操作方式!目前,dart 和 js 之间似乎没有互操作——真的是这样吗?

【问题讨论】:

    标签: javascript dart dart2js dart-js-interop


    【解决方案1】:

    Dart 不适合该用例。 dart:js 和一些黑客攻击 package:js 允许一个一个地公开方法,但这似乎不适合您的用例。

    您可以使用用于开发的 DDC,但会发出可从 JS 使用的可读代码。

    对于生产环境,Dart 应该使用 dart2js 工具编译为 JS,这些工具可以进行树状抖动和缩小。 Tree-shaking 需要对整个应用程序进行分析才能知道需要保留哪些代码。

    我听说 DDC 适用于与您类似的用例的项目。

    【讨论】:

    • 将生成的 js 与 dart_sdk.js 结合后如何实现摇树?
    • 可能有 JS 工具可以做到这一点,Dart 没有为生成的 JS 提供任何东西,除了 dart2js 本身只能对 Dart 代码进行 tree-shake 代码
    猜你喜欢
    • 2012-11-30
    • 2014-10-02
    • 2023-01-16
    • 2014-03-23
    • 2014-05-31
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多