1

我是 Dart 新手,我正在尝试“一小时代码实验室”教程。我正在使用 IntellijIDEA 14 及其 Dart 插件。

当我构建“调试”时,在 Dartium 中一切正常。

当我构建“Release”时,Dart 代码被翻译成 Javascript,但 HTML 代码仍在引用 Dart 源文件。

我想有一些解决方案,你知道吗?

谢谢雷内

4

1 回答 1

2

源代码仍然指向 .dart 文件,因为如果浏览器中有一个 Dart VM,您希望使用它而不是生成的 JS。dart.js 脚本(它是浏览器包的一部分)的工作是确定您正在运行的浏览器是否具有 Dart VM,如果没有,则替换为适当的 JS 脚本。

例如,您的 index.html 文件的源代码可能如下所示:

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

在带有 Dart VM(如 Dartium)的浏览器中,开发工具将显示相同的脚本标签。然而,在原版 Chrome 或其他浏览器中,您在开发工具中看到的 HTML 将如下所示:

<html><body>
    <script type="application/dart" src="http://localhost:8080/main.js">/script>
    <script src="packages/browser/dart.js"></script>
</body></html>

这是因为 dart.js 脚本已经将main.dart脚本替换为对应的 JS 文件。

如果您没有看到这种翻译发生,请确保您在 index.html 文件中包含 dart.js 脚本,并且通过将其添加到 pubspec.yaml 文件的依赖项中来使用浏览器包:

dependencies:
  browser: any

值得注意的是,--mode=release该命令的选项pub build在其输出中不包含 .dart 文件,但其他模式将 ( https://www.dartlang.org/tools/pub/cmd/pub-build.html )。我想由于目前没有任何浏览器在其中包含 Dart VM,因此pub build假设您只想发布 JS 文件。我怀疑如果/当香草 Chrome 添加了 Dart VM 时,这可能会改变。同时,在您构建项目之后,如果您希望它也可以在 Dartium 中工作,您需要将 .dart 文件添加到构建输出。如果你想获得更多的花哨,你可以首先使用带有--output-type=dart标志集的 dart2js ( https://www.dartlang.org/tools/dart2js/#options ) 来缩小你的 Dart。

于 2015-01-08T23:14:06.303 回答