【发布时间】:2015-02-04 01:47:37
【问题描述】:
我想在没有 Dart VM 的浏览器上将 Dart API 导出到 JavaScript。例如,给定一个 A 类:
class A {
String name;
A();
A.withName(this.name);
}
我想使用导出的 API 创建一个 JavaScript 对象:
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
example/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>
(不清楚最后一个脚本标签的 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,结果相同。
我错过了什么?
【问题讨论】:
标签: dart dart-js-interop