3

Dart アプリを Firefox (v22.0) で実行しようとしています。アプリのホームページは次のとおりです。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>My 1st Dart App</title>
        <link rel="stylesheet" href="assets/myapp/myapp/myapp.css">
    </head>
    <body>
        <h2>Push the button!</h2>

        <div id="sample_container_id">
            <input type="button" id="someButton" value="Some Button!" />
        </div>

        <script type="application/dart" src="myapp.dart"></script>
        <script src="packages/browser/dart.js"></script>
    </body>
</html>

これをそのまま実行すると、アプリは正常に動作し、希望どおりに動作します。しかし、最初の<script/>タグ ( <script type="application/dart" src="myapp.dart"></script>) を取り除くと、Dart コードは実行時に実行されません。たとえば、次のように HTML ボタンで構成されたクリック ハンドラーがあります。

void main() {
    querySelector("#someButton").onClick.listen((e) => window.alert("Hello!"));
}

最初のタグを削除すると、<script/>クリックしてsomeButtonも何も起こりません。

<script/>(1) 最初のタグを削除すると Dart コードが「殺される」のはなぜですか? 私はpub buildクロスコンパイルされた JavaScript を生成するために使用していますが、なぜ Firefox が私の Dart ソース ファイルを気にする必要があるのでしょうか (FF 22.0 は Dart をネイティブにサポートしていないため)。

(2) Dart は<DOCTYPE>移行などの推奨される宣言はありますか?

4

4 に答える 4

4

簡単な答え: dart.js を調べて、何が起こっているのかを調べてください。

長い答え: Dart.js はスクリプト application/dart を探します。DartVM (つまり、Dartium) を備えたブラウザーで実行されている場合は、それを起動します。それ以外の場合は、スクリプト ファイルを取得し、ファイルmyapp.dartを変更してmyapp.dart.js実行します。そのスクリプト タグを削除すると、dart.js が検索する dart スクリプトが削除され、その結果、コンパイルされた JavaScript バージョンがドキュメントに挿入されることはありません。

DOCTYPE に関して特に推奨されるものはありませんが、Dart は一般にブラウザの最新バージョン用に設計されており、実際には必要に応じて HTML5 タグを使用するため、例にあるように HTML5 DOCTYPE を使用するのがおそらく最善です。

于 2013-12-23T15:58:05.363 に答える
2
  1. packages/browser/dart.jsDartVMが利用可能かどうかを確認し、そうでない場合は に置き換え<script type="application/dart" src="xxx.dart"></script>ます<script src="xxx.dart.js"></script>dart2jsを実行していると仮定すると、2 つのスクリプト タグを<script src="myapp.dart.js"></script>
  2. 推奨事項はありません。
于 2013-12-23T15:56:26.227 に答える
1

1) Firefox は Dart ソース ファイルを気にしませんが、pub ビルドは気にします。HTML ファイルに Dart スクリプトが含まれていない場合は、pub build何も処理せずにファイルをコピーできます。それ以外の場合pub buildは、ブラウザーが Dart をサポートしていない場合に、Dart スクリプトの代わりに実行される JavaScript コードを追加します。

2) あなたの doctype は正しい HTML5 doctype であり、Dart はそれで正常に動作します。

于 2013-12-23T15:58:25.023 に答える