Czy Dart będzie obsługiwać istniejące biblioteki JavaScript?


108

Rozumiem, że Dart kompiluje się do JavaScript i przeczytałem specyfikację języka Dart w bibliotekach, chociaż nie widziałem tam odpowiedzi. Również wyszukiwanie w ich formularzu dyskusji słowa „istniejący” daje 3 niepowiązane wyniki.

Czy ktoś wie, czy Dart będzie wspierać korzystanie z istniejących bibliotek JavaScript, takich jak jQuery czy Raphael?


1
chociaż teraz zadaję pytanie .
TMB

Odpowiedzi:


96

Odpowiedź brzmi teraz: tak! Dart dostarcza teraz bibliotekę JS-interop do używania istniejącego kodu JavaScript z aplikacją Dart. Dowiedz się więcej tutaj: https://www.dartlang.org/articles/js-dart-interop/


Dzięki za wyjaśnienie, Seth!
jtmcdole

@Seth Mam dodatkowe pytanie. Czy naprawdę ma sens używanie bibliotek Javascript firmy Dart, kiedy Dart jest w stanie w końcu zastąpić Javascript? I czy Dart ma coś wbudowanego do wizualizacji?
Amit Tomar

2
@AmitTomar społeczność nie może natychmiast przenieść wszystkich bibliotek JS, więc sensowne jest korzystanie z ogromnej ilości bibliotek JS. Jeśli chodzi o wykresy (wizualizacje), jestem świadomy tylko współpracy z bibliotekami opartymi na JS.
Seth Ladd

@SethLadd Thanks Seth, to było pomocne.
Amit Tomar

Dzięki Seth, w tym artykule pokazuję również, jak go używać .
graphicbeacon

15

Nie będziesz w stanie wywołać javascript bezpośrednio z kodu rzutki. Natywna dyrektywa jest zarezerwowana dla podstawowych bibliotek dartc (dart: core, dart: dom, dart: html, dart: json itp.), Które same kompilują się do javascript.


czy masz do tego odniesienie?
TMB

6
Pracuję w zespole dartc i wewnętrznie dyskutuje się o ograniczeniu natywnej dyrektywy i słowa kluczowego do dart: libraries. Z pewnością możesz przyjrzeć się podstawowym funkcjom (np. Isolate.dart i isolate.js) i przekonać się, że dodanie słowa kluczowego „native” do sygnatury funkcji (uwaga: brak treści w wersji Dart) umożliwi wywołanie zniekształconej funkcji javascript; ale nie obiecujemy, że nie złamiemy Cię w przyszłości.
jtmcdole

6
Rozumiem i szanuję ideał nadania sieci czystego i przemyślanego języka, ale błagam Cię o rozważenie warstwy międzyoperacyjnej. Microsoft dostarczył jeden z Com do .Net, aby zapewnić, że projekty mogą być migrowane stopniowo. To wcale nie przeszkodziło w sukcesie .Net; Myślę, że pomogło to w jego przyjęciu, chociaż z czasem go poprawili. Jeśli zepsuty jest czymś, co budzi poważne obawy, rozważ program zapraszający dla głównych bibliotek, takich jak jQuery, MooTools i script.aculo.us. Dziękuję Ci.
TMB

2
Zapraszam do zgłaszania propozycji funkcji za pośrednictwem naszego trackera problemów @ link . Nie wierzę, że ta decyzja została jeszcze odrzucona.
jtmcdole

1

8

Jest teraz nowy, prostszy sposób https://pub.dartlang.org/packages/js (obecnie wersja 0.6.0-beta.6)

Udostępnij klasy i funkcje JS dla Dart, takie jak:

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

więcej informacji znajdziesz w pliku Readme pakietu



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.