我想在沒有Dart VM的瀏覽器上將Dart API導出爲JavaScript。例如,假定A類:將Dart API導出爲JavaScript,沒有Dart VM
class A {
String name;
A();
A.withName(this.name);
}
我想使用導出的API能夠創建一個JavaScript對象:
var a = new A();
回答我previous question向我指出JS-互操作。
但是,在通過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();
}
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,這並不會改變我的結果。)
我希望能夠在編譯(工具 - > Pub構建)和加載index.html後打開控制檯,然後這樣做:
var a = new dart.a.A();
但是,我得到這個,而不是:「不能讀取未定義的屬性'A'。換句話說,dart.a
是未定義的。
在index.html中包含原始Dart腳本表明js-interop是針對具有Dart VM的瀏覽器的。我嘗試在Dartium上運行index.html,結果相同。
我錯過了什麼?
謝謝,這很好。鑑於此,關於我的設置出錯的地方有什麼想法? – 2014-12-05 21:55:13
我還沒有使用這個包,但我知道你需要運行'pub build'來從Dart和'main.dart'文件獲取JavaScript,'src'文件指向的不能在'build'目錄中。當你運行'pub build'時,'build'目錄被清除。 'main.dart'文件應該在'web'目錄下,'src'屬性應該是'src =「main.dart' – 2014-12-05 22:00:35
感謝您的提示。我添加了一個'web'目錄並將index.html編輯src指向「main.dart」,我可以「運行」index.html,然後服務器啓動,但問題仍然存在,加載頁面後dart.a未定義,頁面上沒有錯誤,當我加載頁面時,許多dart文件會被加載,如Dart編輯器中的「工具輸出」所證明的那樣。 – 2014-12-05 22:23:52