我们公司有一个很多漏洞的JavaScript客户端应用程序。像大多数JavaScript应用程序一样,代码正在迅速变得难以管理。
我个人认为使用Dart编写会是一个更好的解决方案。但是重新开始的管理方法行不通。
我知道可以从Dart调用JavaScript代码,但是是否可以从JavaScript调用Dart代码?
这将允许我们逐步使用Dart版本替换更关键的库,同时仍然能够使用原始代码库。
我们公司有一个很多漏洞的JavaScript客户端应用程序。像大多数JavaScript应用程序一样,代码正在迅速变得难以管理。
我个人认为使用Dart编写会是一个更好的解决方案。但是重新开始的管理方法行不通。
我知道可以从Dart调用JavaScript代码,但是是否可以从JavaScript调用Dart代码?
这将允许我们逐步使用Dart版本替换更关键的库,同时仍然能够使用原始代码库。
你应该尝试使用Dart的JS interop库。
你可以在Dart中定义回调函数并将其导出(以某种方式)到JavaScript中。
看看这个例子:
context['javascriptFunctionName'] = (parameter) {
//call any Dart method
}
然后从JavaScript中调用它:
javascriptFunctionName({'param': 'value'});
context[...]
需要添加到 Dart 的 main()
函数中。你还需要一个 import 'dart:js';
。 - alanjds使用js
包而非dart:js
,可以这样将其提供给JS:
import 'dart:html';
import 'package:js/js_util.dart';
void main() {
setProperty(window, 'callDartFunc', allowInterop(dartFunc));
}
String dartFunc() => 'Hello World';
<script type="application/dart" src="fileName.dart"></script>
<script src="packages/browser/dart.js"></script>
你应该能够添加Dart替换代码并编译它。这样,你可以逐步开始进行转换。据我所知,没有办法从JavaScript调用Dart代码。
既然我有更多时间了,让我详细解释一下。由于Dart是一种相对较新的语言,并且它并没有增加JavaScript语言的什么功能,因此Oracle没有太多的动力为其添加与Dart的跨兼容性。虽然这两种语言可能不太兼容,但它们可以共存,并且具有更单向的关系。
只要您直接从HTML文件或其他Dart函数中调用Dart代码,您就至少可以开始将Dart集成到您的站点中。随着时间的推移,如果您决定采取这个方向,应该能够开始更新JavaScript到Dart的漫长过程。