Dart, mevcut JavaScript kitaplıklarının kullanımını destekleyecek mi?


108

Dart'ın JavaScript için derlediğini anlıyorum ve Kitaplıklardaki Dart Dili Spesifikasyonunu okudum , ancak orada bir yanıt görmedim. Ayrıca tartışma formlarında 'mevcut' kelimesi için yapılan bir arama, ilişkili olmayan 3 sonuç ortaya çıkarır.

Dart'ın jQuery veya Raphael gibi mevcut JavaScript kitaplıklarının kullanımını destekleyip desteklemeyeceğini bilen var mı?


1
Şimdi soruyu göndermeme rağmen .
TMB

Yanıtlar:


96

Cevap şimdi Evet! Dart artık mevcut JavaScript kodunu Dart uygulamanızla kullanmak için bir JS-birlikte çalışma kitaplığı gönderiyor. Buradan daha fazla bilgi edinin: https://www.dartlang.org/articles/js-dart-interop/


Açıklama için teşekkürler Seth!
jtmcdole

@Seth bir takip sorum vardı. Dart nihayet Javascript'in yerini alacakken, Dart'ın Javascript kitaplıklarını kullanmanız gerçekten mantıklı geliyor mu? Dart'ın görselleştirme için dahili bir şeyi var mı?
Amit Tomar

2
@AmitTomar, topluluk hemen tüm JS kitaplıklarını aktaramaz, bu nedenle çok sayıda JS kitaplığını kullanmak mantıklıdır. Grafik oluşturma (görselleştirme) ile ilgili olarak, yalnızca JS tabanlı kitaplıklarla birlikte çalışmayı biliyorum.
Seth Ladd

@SethLadd Teşekkürler Seth, bu yardımcı oldu.
Amit Tomar

Teşekkürler Seth, bu yazıda nasıl kullanılacağını da gösteriyorum .
graphicbeacon

15

Javascript'i doğrudan dart kodundan arayamayacaksınız. Yerel yönerge, kendisi javascript'e derleyen dartc'nin (dart: core, dart: dom, dart: html, dart: json, vb.) Çekirdek kitaplıkları için ayrılmıştır.


bunun için bir referansın var mı?
TMB

6
Dartc ekibinde çalışıyorum ve dahili olarak yerel yönergeyi ve anahtar kelimeyi dart ile sınırlandırma konuşmaları var: yalnızca kütüphaneler. Herhangi bir temel işleve (örneğin, isolate.dart & isolate.js) bakabilir ve "yerel" anahtar sözcüğünü bir işlev imzasına eklemenin (not: Dart sürümünde hiçbir gövde) karıştırılmış bir javascript işlevini çağırmanıza izin vereceğini görebilirsiniz; ama gelecekte sizi kıramayacağımıza dair hiçbir söz vermiyoruz.
jtmcdole

6
Web'e temiz ve düşünülmüş bir dil verme idealini anlıyor ve saygı duyuyorum, ancak sizden birlikte çalışma katmanı düşünmenizi rica ediyorum. Microsoft, projelerin aşamalı olarak taşınmasını sağlamak için Com'dan .Net'e bir tane sağladı. Bu, .Net'in başarısını hiç engellemedi; Zamanla iyileştirmelerine rağmen benimsenmesine yardımcı olduğuna inanıyorum. Kırma ciddi bir endişe kaynağıysa, büyük kütüphaneler için jQuery, MooTools ve script.aculo.us gibi bir davet programı düşünün. Teşekkür ederim.
TMB

2
Sizi sorun izleyici @ bağlantımız üzerinden bir özellik talebinde bulunmaya davet ediyorum . Henüz bu kararın değiştirildiğine inanmıyorum.
jtmcdole

1
Bunun tekrar bir sorun olarak gündeme getirildiğini
belirtmek isterim

8

Artık daha basit bir yol var https://pub.dartlang.org/packages/js (şu anda sürüm 0.6.0-beta.6)

JS sınıflarını ve işlevlerini Dart'ın kullanımına sunun:

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

daha fazla bilgi için paketin benioku sayfasına bakın



4

Bir dart:jskütüphane de bulunmaktadır. Ve işte bu kitaplığın JavaScript ile birlikte çalışmak için nasıl kullanılacağını açıklayan bir makale .


1
Bağlantının yanlış olduğunu unutmayın. Ana dart kitaplıklarının bir parçası olan Dart / JS, javascript arayüzü için kullanımı çok daha kolay ve daha temizdir. Konuyla ilgili resmi bir şey görmüyorum, ancak SDK'nın bir parçası: api.dartlang.org/stable/1.17.1/dart-js/dart-js-library.html
BeatingToADifferentRobot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.