发布和调试Dart构建版本

时间:2015-01-08 22:55:39

标签: intellij-idea dart dartium

我很新鲜的Dart appretience,我正在尝试一小时代码实验室'教程。我使用的是IntellijIDEA 14及其Dart插件。

当我构建' Debug'时,Dartium中的一切正常。

当我构建'发布'时,Dart代码会被转换为Javascript,但HTML代码仍然引用Dart源文件。

我认为这有一些解决方案,你知道吗?

由于 雷

1 个答案:

答案 0 :(得分: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)的浏览器中,开发工具将显示相同的脚本标记。但是,在vanilla 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文件。我怀疑如果/当vanilla Chrome添加了Dart VM时,这可能会发生变化。同时,在构建项目后,如果您希望它也可以在Dartium中运行,则需要将.dart文件添加到构建输出。如果你想获得额外的幻想,你可以先使用设置了--output-type=dart标志的{{1}}标记dart2j来缩小你的Dart。