2011-10-10 7 views
93

ダーツがJavaScriptにコンパイルされていることを理解していますが、ライブラリにはDart Language Specがありますが、回答はありませんでした。また、discussion formの単語「existing」の検索では、関連していない3つの結果が表示されます。Dartは既存のJavaScriptライブラリの使用をサポートしますか?

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

+1

ですが、私は[質問](https://groups.google.com/a/dartlang.org/group/misc/browse_thread/thr)を投稿しています。 ead/511a97cd362b4f08#) – TMB

答えて

84

答えは「はい」です。 Dartは現在、Dartアプリで既存のJavaScriptコードを使用するためのJS-interopライブラリを提供しています。詳細はこちらhttps://www.dartlang.org/articles/js-dart-interop/

+0

清算のおかげで、セス! – jtmcdole

+0

@Seth私はフォローアップの質問がありました。ダーツのJavascriptライブラリを使用すると、ダーツが最終的にJavascriptを置き換えるときに本当に意味をなさないでしょうか?そして、Dartはビジュアライゼーションのために何かを作りましたか? –

+2

@AmitTomarコミュニティはすぐにすべてのJSライブラリを移植することはできません。そのため、膨大な量のJSライブラリを使用することが理にかなっています。チャート作成(ビジュアライゼーション)に関しては、私はJSベースのライブラリとの相互運用性のみを認識しています。 –

3

ディスカッションフォーラムからこのスレッドを参照してください:Calling old javascript code

+1

彼らはネイティブキーワードを参照しますが、私はそれをライブラリリファレンスまたは言語仕様で見つけることができません。 – TMB

14

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

+0

これについての参考情報はありますか? – TMB

+6

私はdartcチームで働いています。内部的にはネイティブのディレクティブとキーワードをdart:ライブラリのみに限定するという話があります。確かに、コア関数(例えばisolate.dart&isolate.js)を見て、 "ネイティブ"キーワードを関数シグネチャに追加することができます(注:Dartバージョンではボディがありません)ので、Javascript関数を呼び出すことができます。私たちは将来あなたを傷つけないことを約束していません。 – jtmcdole

+6

私は、Webにきれいで思いやりのある言葉を与えるという理想を理解し、尊重していますが、私はあなたにinterop層を考慮してください。マイクロソフトはComから.Netへの移行を提供し、プロジェクトを段階的に移行できるようにしました。これは.Netの成功をまったく妨げませんでした。時間をかけて改善しましたが、それが採用を助けたと私は信じています。クラッキングが重大な問題である場合は、jQuery、MooTools、script.aculo.usなどの主要ライブラリの招待プログラムを検討してください。ありがとうございました。 – TMB

2

dart:jsライブラリもあります。 JavaScriptとの相互運用にこのライブラリを使用する方法を説明するan articleがあります。

+0

リンクが不正確であることに注意してください。メインのダーツライブラリの一部であるDart/JSは、javascriptとのインターフェースに使うのがはるかに簡単でクリーンです。私はこの話題について何も公式には見ませんが、それはSDKの一部です:https://api.dartlang.org/stable/1.17.1/dart-js/dart-js-library.html – BeatingToADifferentRobot

6

新しい簡単な方法https://pub.dartlang.org/packages/js(現在のバージョン0.6.0-beta.6)

のようなダートにJSクラスや関数を利用可能になりました:

ため
@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); 
} 

詳細については、

関連する問題