我是 Dart 新手,我正在尝试“一小时代码实验室”教程。我正在使用 IntellijIDEA 14 及其 Dart 插件。
当我构建“调试”时,在 Dartium 中一切正常。
当我构建“Release”时,Dart 代码被翻译成 Javascript,但 HTML 代码仍在引用 Dart 源文件。
我想有一些解决方案,你知道吗?
谢谢雷内
我是 Dart 新手,我正在尝试“一小时代码实验室”教程。我正在使用 IntellijIDEA 14 及其 Dart 插件。
当我构建“调试”时,在 Dartium 中一切正常。
当我构建“Release”时,Dart 代码被翻译成 Javascript,但 HTML 代码仍在引用 Dart 源文件。
我想有一些解决方案,你知道吗?
谢谢雷内
源代码仍然指向 .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。