3

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 を実行してみましたが、結果は同じでした。

私は何が欠けていますか?

4

2 に答える 2