从javascript调用Dart代码

ric*_*ard 12 dart

我的公司有一个用Javascript编写的非常多的胖客户端应用程序.与通常的大型JavaScript应用程序一样,代码正在迅速变得难以管理.

我个人认为用Dart写作会是一个更好的解决方案.但是,"重新开始"的管理方法是行不通的.

我知道可以从Dart调用javascript代码,但是可以从Javascript调用Dart代码吗?

这将允许我们逐步用Dart版本替换更重要的库,并且仍然能够使用原始代码库.

谢谢理查德

Paw*_*tyć 13

你应该试试Dart的JS互操作库.

您可以在Dart中定义回调函数并将其(以某种方式)导出到JavaScript.

看看这个例子:

Dart代码定义了JS函数

 context['javascriptFunctionName'] = (parameter) {
       //call any Dart method
    }
Run Code Online (Sandbox Code Playgroud)

然后从JavaScript调用它:

javascriptFunctionName({'param': 'value'});
Run Code Online (Sandbox Code Playgroud)

  • 您可以在https://github.com/hangstrap/TestJavascriptCall找到一个简单的示例项目,感谢您的帮助! (2认同)

Gün*_*uer 5

使用 packagejs而不是dart:js它可以通过这种方式提供给 JS:

import 'dart:html';
import 'package:js/js_util.dart';

void main() {
  setProperty(window, 'callDartFunc', allowInterop(dartFunc));
}

String dartFunc() => 'Hello World';
Run Code Online (Sandbox Code Playgroud)

感谢 Matan Lurey https://gitter.im/dart-lang/TALK-general?at=585b9b42db9cafe9183a3345