Dart VM のないブラウザーで Dart API を JavaScript にエクスポートしたいと考えています。たとえば、クラス A が与えられた場合:
class A {
String name;
A();
A.withName(this.name);
}
エクスポートされた API を使用して JavaScript オブジェクトを作成したいと思います。
var a = new A();
以前の質問への回答で、js-interop にたどり着きました。
ただし、 README の例を実行しても、期待どおりの結果が得られません。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();
}
lib/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>
(最後の script タグの src 属性がどこを指すかは明確ではありません。 /example/main.dart も使用してみましたが、結果は変わりません。)
コンパイル (Tool -> Pub Build) と index.html のロード後にコンソールを開き、次の操作を実行できることを期待していました。
var a = new dart.a.A();
ただし、代わりに「未定義のプロパティ 'A'を読み取れません」というメッセージが表示されます。つまり、dart.a
未定義です。
index.html に生の Dart スクリプトが含まれていることは、js-interop が Dart VM を備えたブラウザーを対象としていることを示唆しています。Dartium で index.html を実行してみましたが、結果は同じでした。
私は何が欠けていますか?