Akankah Dart mendukung penggunaan pustaka JavaScript yang ada?

108

Saya memahami kompilasi Dart ke JavaScript, dan saya membaca Spesifikasi Bahasa Dart di Perpustakaan, meskipun saya tidak melihat jawabannya di sana. Juga pencarian di formulir diskusi mereka untuk kata 'ada' ternyata 3 hasil yang tidak berhubungan.

Adakah yang tahu jika Dart akan mendukung penggunaan pustaka JavaScript yang ada seperti jQuery atau Raphael?

TMB
sumber
1
meskipun saya memposting pertanyaan sekarang.
TMB

Jawaban:

96

Jawabannya sekarang adalah Ya! Dart sekarang mengirimkan pustaka JS-interop untuk menggunakan kode JavaScript yang ada dengan aplikasi Dart Anda. Pelajari lebih lanjut di sini: https://www.dartlang.org/articles/js-dart-interop/

Seth Ladd
sumber
Terima kasih atas klarifikasinya, Seth!
jtmcdole
@Seth Saya punya pertanyaan lanjutan. Apakah sangat masuk akal bagi Anda untuk menggunakan pustaka Javascript dari Dart, ketika Dart ada untuk akhirnya menggantikan Javascript? Dan apakah Dart memiliki sesuatu untuk visualisasi?
Amit Tomar
2
@AmitTomar komunitas tidak dapat melakukan porting ke semua pustaka JS dengan segera, jadi masuk akal untuk menggunakan sejumlah besar pustaka JS di luar sana. Adapun bagan (visualisasi), saya hanya mengetahui interop dengan perpustakaan berbasis JS.
Seth Ladd
@SethLadd Terima kasih Seth, itu sangat membantu.
Amit Tomar
Terima kasih Seth, saya juga menunjukkan cara menggunakannya di artikel ini .
graphicbeacon
15

Anda tidak akan dapat memanggil javascript langsung dari kode panah. Direktif asli dicadangkan untuk pustaka inti dartc (dart: core, dart: dom, dart: html, dart: json, dll), yang dikompilasi sendiri ke javascript.

jtmcdole.dll
sumber
apakah kamu punya referensi untuk ini?
TMB
6
Saya bekerja di tim dartc dan secara internal ada pembicaraan untuk membatasi direktif asli & kata kunci menjadi dart: hanya perpustakaan. Anda pasti dapat melihat fungsi inti apa pun (misalnya isolate.dart & isolate.js) dan melihat bahwa menambahkan kata kunci "asli" ke tanda tangan fungsi (catatan: tidak ada isi dalam versi Dart) akan memungkinkan Anda memanggil fungsi javascript yang rusak; tapi kami tidak berjanji bahwa kami tidak akan menghancurkanmu di masa depan.
jtmcdole
6
Saya memahami dan menghormati cita-cita memberikan Web bahasa yang bersih dan dipikirkan, tetapi saya mohon Anda untuk mempertimbangkan lapisan interop. Microsoft menyediakan satu dari Com ke .Net untuk membantu memastikan bahwa proyek dapat dimigrasi secara bertahap. Ini tidak menghalangi kesuksesan .Net sama sekali; Saya percaya itu membantu adopsi, meskipun mereka memperbaikinya seiring waktu. Jika melanggar adalah sesuatu yang menjadi perhatian serius, pertimbangkan program undangan untuk pustaka utama seperti jQuery, MooTools, dan script.aculo.us. Terima kasih.
TMB
2
Saya mengundang Anda untuk membuat permintaan fitur melalui pelacak masalah @ tautan kami . Saya tidak percaya keputusan ini telah dilemparkan.
jtmcdole
1
Hanya menunjukkan bahwa ini telah dibawa sebagai masalah lagi: code.google.com/p/dart/issues/detail?id=1108
jtmcdole
8

Sekarang ada cara baru yang lebih sederhana https://pub.dartlang.org/packages/js (saat ini versi 0.6.0-beta.6)

Buat kelas dan fungsi JS tersedia untuk Dart seperti:

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

untuk lebih lanjut lihat readme dari paket tersebut

Günter Zöchbauer
sumber
4

Lihat utas ini dari forum diskusi: Memanggil kode javascript lama .

Lukas Renggli
sumber
1
mereka membuat referensi ke kata kunci native, tetapi saya tidak dapat menemukannya di Referensi Perpustakaan atau Spesifikasi Bahasa.
TMB
4

Ada juga dart:jsperpustakaan. Dan berikut adalah artikel yang menjelaskan cara menggunakan pustaka ini untuk beroperasi dengan JavaScript.

Shailen Tuli
sumber
1
Perhatikan bahwa tautan tersebut tidak akurat. Dart / JS yang merupakan bagian dari pustaka dart utama jauh lebih mudah dan lebih bersih untuk digunakan sebagai antarmuka ke javascript. Saya tidak melihat apa pun yang resmi tentang topik ini, tetapi itu adalah bagian dari SDK: api.dartlang.org/stable/1.17.1/dart-js/dart-js-library.html
BeatingToADifferentRobot