Will Dart是否支持使用现有的JavaScript库?

TMB*_*TMB 107 javascript libraries dart

我理解Dart编译成JavaScript,我读了关于库的Dart语言规范,虽然我没有看到答案.在他们的讨论表单上搜索"现有"这个词会产生3个与之无关的结果.

有没有人知道Dart是否支持使用现有的JavaScript库,如jQuery或Raphael?

Set*_*add 96

答案现在是的!Dart现在提供了一个JS-interop库,可以在Dart应用程序中使用现有的JavaScript代码.在此处了解更多信息:https://www.dartlang.org/articles/js-dart-interop/

  • @AmitTomar社区无法立即移植到所有JS库,因此使用大量的JS库是有意义的.至于图表(可视化),我只知道与基于JS的库互操作. (2认同)

jtm*_*ole 15

您将无法直接从dart代码调用javascript.本机指令保留给dartc的核心库(dart:core,dart:dom,dart:html,dart:json等),它本身编译为javascript.

  • 我在dartc团队工作,并在内部讨论限制本机指令和关键字dart:library only.您当然可以查看任何核心函数(例如isolate.dart和isolate.js),并查看将"native"关键字附加到函数签名(注意:Dart版本中没有正文)将允许您调用错误的javascript函数; 但是我们不承诺将来会打破你. (6认同)
  • 我理解并尊重为Web提供干净且经过深思熟虑的语言的理想,但我请求您考虑一个互操作层.Microsoft从Com提供了一个到.Net,以帮助确保可以逐步迁移项目.这并没有阻碍.Net的成功; 我相信它有助于它的采用,尽管它们确实随着时间的推移而改进.如果破坏是一个令人严重关注的问题,请考虑针对主要库的邀请程序,例如jQuery,MooTools和script.aculo.us.谢谢. (6认同)
  • 我邀请您通过问题跟踪器@ [link](http://code.google.com/p/dart/issues/)发出功能请求.我不相信这个决定已经一成不变. (2认同)

Gün*_*uer 8

现在有一种新的更简单的方法https://pub.dartlang.org/packages/js(目前版本0.6.0-beta.6)

让Dart的JS类和函数可用:

@JS("JSON.stringify")
external String stringify(obj);
Run Code Online (Sandbox Code Playgroud)
@JS('google.maps')
library maps;

// Invokes the JavaScript getter `google.maps.map`.
external Map get map;

// `new Map` invokes JavaScript `new google.maps.Map(location)`
@JS()
class Map {
  external Map(Location location);
  external Location getLocation();
}

// `new Location(...)` invokes JavaScript `new google.maps.LatLng(...)`
//
// We recommend against using custom JavaScript names whenever
// possible. It is easier for users if the JavaScript names and Dart names
// are consistent.
@JS("LatLng")
class Location {
  external Location(num lat, num lng);
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅封装的自述文件