Dartは既存のJavaScriptライブラリの使用をサポートしますか?


108

私はDartがJavaScriptにコンパイルすることを理解し、ライブラリのDart言語仕様を読みましたが、そこには答えがありませんでした。また、それらのディスカッションフォームで「既存」という単語を検索すると、関連のない3つの結果が表示されます。

DartがjQueryやRaphaelなどの既存のJavaScriptライブラリの使用をサポートするかどうか誰か知っていますか?


1
私は今質問を投稿していますが。
TMB

回答:


96

答えは今はいです!Dartには、Dartアプリで既存のJavaScriptコードを使用するためのJS相互運用ライブラリが同梱されています。詳細については、https//www.dartlang.org/articles/js-dart-interop/をご覧ください。


説明してくれてありがとう、セス!
jtmcdole 2012年

@Seth私はフォローアップの質問がありました。DartがJavascriptをやや置換するためにそこにあるときに、DartのJavascriptライブラリを使用することは本当に意味がありますか?そして、ダートには視覚化のための何かが組み込まれていますか?
Amit Tomar 2014年

2
@AmitTomarコミュニティがすべてのJSライブラリをすぐに移植することはできないため、膨大な量のJSライブラリをそこから使用することは理にかなっています。チャート(視覚化)については、JSベースのライブラリとの相互運用のみを認識しています。
セスラッド2014年

@SethLaddおかげでセス、役に立ちました。
Amit Tomar 2014

Sethに感謝します。また、この記事でそれを使用する方法を示します。
graphicbeacon

15

dartコードから直接JavaScriptを呼び出すことはできません。ネイティブディレクティブは、それ自体がJavaScriptにコンパイルされるdartcのコアライブラリ(dart:core、dart:dom、dart:html、dart:jsonなど)用に予約されています。


これのリファレンスはありますか?
TMB

6
私はdartcチームで働いており、内部ではネイティブディレクティブとキーワードをdart:ライブラリのみに制限するという話があります。コア関数(isolate.dart&isolate.jsなど)を確認して、「native」キーワードを関数シグネチャに追加すると(Dartバージョンには本体がないため)、破損したJavaScript関数を呼び出せることがわかります。しかし、私たちは将来あなたを壊さないという約束はしません。
jtmcdole

6
私はWebにクリーンで考え抜かれた言語を与えるという理想を理解し、尊重しますが、相互運用層を検討するようにお願いします。Microsoftは、プロジェクトを段階的に移行できるように、Comから.Netに1つ提供しました。これは.Netの成功をまったく妨げていません。彼らは時間とともにそれを改善しましたが、私はそれがその採用を助けたと信じています。破壊が深刻な問題である場合は、jQuery、MooTools、script.aculo.usなどの主要なライブラリの招待プログラムを検討してください。ありがとうございました。
TMB

2
課題トラッカー@ リンクから機能のリクエストを送信してください。この決定がまだ根拠のないものであるとは思わない。
jtmcdole

1
これが問題として再び提起されたことを指摘するだけです:code.google.com/p/dart/issues/detail
id=

8

より簡単な方法が新しくなりましたhttps://pub.dartlang.org/packages/js(現在バージョン0.6.0-beta.6)

次のように、JSクラスと関数をDartで使用できるようにします。

@JS("JSON.stringify")
external String stringify(obj);
@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);
}

詳細については、パッケージのreadmeを参照してください



4

dart:js図書室もあります。そして、JavaScriptと相互運用するためにこのライブラリを使用する方法を説明する記事あります。


1
リンクが不正確であることに注意してください。メインのdartライブラリの一部であるDart / JSは、JavaScriptへのインターフェースとして使用するのがはるかに簡単でクリーンです。このトピックについて公式なものは何もありませんが、SDKの一部です:api.dartlang.org/stable/1.17.1/dart-js/dart-js-library.html
BeatingToADifferentRobot '21
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.