Dart가 기존 JavaScript 라이브러리 사용을 지원합니까?


108

나는 Dart가 JavaScript로 컴파일된다는 것을 이해하고 , 거기에서 답을 보지 못했지만 라이브러리 의 Dart 언어 사양 을 읽었 습니다. 또한 토론 양식 에서 '기존'이라는 단어를 검색 하면 관련없는 3 개의 결과가 나타납니다.

Dart가 jQuery 또는 Raphael과 같은 기존 JavaScript 라이브러리의 사용을 지원하는지 아는 사람이 있습니까?


1
나는 지금 질문을 게시하고 있지만 .
TMB

답변:


96

대답은 이제 예입니다! Dart는 이제 Dart 앱에서 기존 JavaScript 코드를 사용하는 JS-interop 라이브러리를 제공합니다. 여기에서 자세히 알아보세요 : https://www.dartlang.org/articles/js-dart-interop/


설명 해주셔서 감사합니다, Seth!
jtmcdole

@Seth 후속 질문이 있습니다. Dart가 마침내 Javascript를 대체 할 때 Dart의 Javascript 라이브러리를 사용하는 것이 실제로 의미가 있습니까? 그리고 Dart에는 시각화를 위해 내장 된 것이 있습니까?
Amit Tomar 2014 년

2
@AmitTomar 커뮤니티는 모든 JS 라이브러리를 즉시 이식 할 수 없으므로 방대한 양의 JS 라이브러리를 사용하는 것이 좋습니다. 차트 작성 (시각화)에 관해서는 JS 기반 라이브러리와의 상호 운용성 만 알고 있습니다.
Seth Ladd 2014 년

@SethLadd 감사합니다 Seth, 그게 도움이되었습니다.
Amit Tomar 2014

감사합니다 Seth, 나는 또한이 기사 에서 그것을 사용하는 방법을 보여줍니다 .
graphicbeacon

15

dart 코드에서 직접 javascript를 호출 할 수 없습니다. native 지시문은 자체적으로 javascript로 컴파일되는 dartc의 핵심 라이브러리 (dart : core, dart : dom, dart : html, dart : json 등) 용으로 예약되어 있습니다.


이것에 대한 참조가 있습니까?
TMB 2011 년

6
나는 dartc 팀에서 일하고 있으며 내부적으로는 기본 지시문과 키워드를 dart로 제한하는 이야기가 있습니다 : 라이브러리 만. 모든 핵심 함수 (예 : isolate.dart 및 isolate.js)를 살펴보고 함수 시그니처에 "native"키워드를 추가하면 (참고 : Dart 버전에서는 본문이 없음) 엉뚱한 자바 스크립트 함수를 호출 할 수 있습니다. 그러나 우리는 미래에 당신을 깨지 않을 것이라고 약속하지 않습니다.
jtmcdole

6
저는 웹에 깔끔하고 신중한 언어를 제공하는 이상을 이해하고 존중하지만 interop 레이어를 고려해 주시기 바랍니다. Microsoft는 프로젝트를 점진적으로 마이그레이션 할 수 있도록 Com에서 .Net으로 하나를 제공했습니다. 이것은 .Net의 성공을 전혀 방해하지 않았습니다. 시간이 지남에 따라 개선되었지만 채택에 도움이되었다고 생각합니다. 중단이 심각한 문제인 경우 jQuery, MooTools 및 script.aculo.us와 같은 주요 라이브러리에 대한 초대 프로그램을 고려하십시오. 감사합니다.
TMB

2
나는 당신이 @ 우리의 이슈 트래커를 통해 기능 요청하도록 초대 링크를 . 나는이 결정이 아직 돌에 던져 졌다고 생각하지 않습니다.
jtmcdole

1
이 문제가 다시 문제로 제기되었음을 지적하기 만하면됩니다. code.google.com/p/dart/issues/detail?id=1108
jtmcdole

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

자세한 내용은 패키지 읽어보기를 참조하십시오.



4

dart:js도서관 도 있습니다. 그리고 여기에 기사 자바 스크립트와 상호 운용이 라이브러리를 사용하는 방법을 설명가.


1
링크가 정확하지 않습니다. 주요 dart 라이브러리의 일부인 Dart / JS는 자바 스크립트 인터페이스에 사용하기가 훨씬 쉽고 깔끔합니다. 나는 주제에 아무것도 공식을 확인할 수 없습니다,하지만 SDK의 일부입니다 api.dartlang.org/stable/1.17.1/dart-js/dart-js-library.html
BeatingToADifferentRobot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.