Я хотел бы экспортировать Dart API в JavaScript в браузерах без Dart VM. Например, если класс А:Экспорт Dart API на JavaScript без Dart VM
class A {
String name;
A();
A.withName(this.name);
}
Я хотел бы создать объект JavaScript с помощью экспортируемого API с:
var a = new A();
Ответ на мой previous question указал мне на JS-Interop.
Однако я не могу получить ожидаемый результат при работе через README example. Похоже, что моя библиотека Dart не экспортируется в JavaScript.
pubspec.yaml:
name: interop
description: >
A library useful for applications or for sharing on pub.dartlang.org.
version: 0.0.1
dev_dependencies:
unittest: any
dependencies:
js:
git:
url: git://github.com/dart-lang/js-interop.git
transformers:
- js
- js/initializer
Пример/main.dart
библиотека Основной:
import 'package:js/js.dart';
main() {
initializeJavaScript();
}
Библиотека/a.dart
library a;
import 'package:js/js.dart';
@Export()
class A {
String name;
A();
A.withName(this.name);
}
index.html
<html>
<head>
<script src="packages/js/interop.js"></script>
</head>
<body>
<script type="application/dart" src="build/example/main.dart"></script>
</body>
</html>
(Это не ясно, где атрибут SRC из этого последнего тега сценария должен указывать. Я также попытался использовать /example/main.dart, что не меняет результат.)
Ожидается, что я смогу открыть консоль после компиляции (Tool -> Pub Build) и загрузить index.html , а затем сделать это:
var a = new dart.a.A();
Однако я получаю вместо этого: «не удается прочитать свойство„а“не определено». Другими словами, dart.a
не определено.
Включение исходного скрипта Дарта в index.html предполагает, что js-interop предназначен для браузера с Dart VM. Я попытался запустить index.html на Dartium с тем же результатом.
Что мне не хватает?
Спасибо, это приятно знать. Учитывая, что любые идеи относительно того, где моя установка идет не так? –
Я еще не использовал этот пакет, но я знаю, что вам нужно запустить 'pub build', чтобы получить JavaScript из Dart и файл' main.dart', который указывает файл 'src', не должен находиться в каталоге' build'. Когда вы запускаете 'pub build', каталог' build' очищается. Файл 'main.dart' должен находиться в каталоге' web', а атрибут 'src' должен быть просто' src = 'main.dart' –
Спасибо за подсказку. Я добавил каталог «web» и переместил index.html там. Отредактировано src, чтобы указать на «main.dart». Я могу «Запустить» index.html, и сервер запустится. Однако проблема остается. dart.a не указана после загрузки страницы. , и многие файлы dart загружаются при загрузке страницы, о чем свидетельствует «Выход инструмента» в редакторе Dart. –