我的公司有一个用Javascript编写的非常胖的胖客户端应用程序。与通常的大型JavaScript应用程序一样,代码正在迅速变得难以管理。
我个人认为用Dart写作会是一个更好的解决方案。但是,再次开始'管理方法不起作用。
我知道可以从Dart调用javascript代码,但是可以从Javascript调用Dart代码吗?
这将允许我们逐步用Dart版本替换更重要的库,并且仍然可以使用原始代码库。
由于 理查德
答案 0 :(得分:12)
你应该试试Dart的JS interop library。
您可以在Dart中定义回调函数,并将其(以某种方式)导出到JavaScript。
看一下这个例子:
context['javascriptFunctionName'] = (parameter) {
//call any Dart method
}
然后从JavaScript调用它:
javascriptFunctionName({'param': 'value'});
答案 1 :(得分:1)
使用包js
而不是dart:js
,可以通过这种方式将其提供给JS:
import 'dart:html';
import 'package:js/js_util.dart';
void main() {
setProperty(window, 'callDartFunc', allowInterop(dartFunc));
}
String dartFunc() => 'Hello World';
感谢Matan Lurey https://gitter.im/dart-lang/TALK-general?at=585b9b42db9cafe9183a3345
答案 2 :(得分:-5)
只要在html文件中包含强制性的飞镖线:
<script type="application/dart" src="fileName.dart"></script>
<script src="packages/browser/dart.js"></script>
你应该能够添加飞镖替换代码并进行编译。这样您就可以开始逐位转换。据我所知,虽然没有办法从JavaScript调用dart代码。
现在我有更多的时间,让我解释一下。由于Dart是一种相对较新的语言,并且它没有为JavaScript语言添加任何内容,因此Oracle没有很多动机来增加与Dart的交叉兼容性。虽然这两种语言可能没有那么多交叉兼容,但它们可以共存并且具有更多的单向关系。
只要您直接从您的html文件或其他飞镖功能调用您的飞镖代码,您至少可以启动将dart集成到您的网站的过程。然后在时间允许的情况下,如果这是您决定采用的方向,您应该能够开始更新JavaScript的长时间过程。