Dart 构建的发布和调试版本

Release and debug version of Dart build

我是 Dart 新手,正在尝试 'one-hour-codelab' 教程。我正在使用 IntellijIDEA 14 及其 Dart 插件。

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

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

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

谢谢 雷内

源代码仍然指向 .dart 文件,因为如果浏览器中有 Dart 虚拟机,您希望使用它而不是生成的 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脚本已经用对应的JS文件替换了main.dart脚本

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

dependencies:
  browser: any

值得注意的是 pub build 命令的 --mode=release 选项不在其输出中包含 .dart 文件,但其他模式会 (https://www.dartlang.org/tools/pub/cmd/pub-build.html). I suppose that since no browsers in the wild currently have a Dart VM in them, that pub build assumes you only want to release JS files. I suspect this might change if/when vanilla Chrome gets the Dart VM added in. In the meantime, after you build your project, if you want it to also work in Dartium, you'll need to add in the .dart files to the build output. If you wanted to get extra fancy, you could minify your Dart first by using dart2js with the --output-type=dart flag set (https://www.dartlang.org/tools/dart2js/#options).