本文将向你阐述迁移 Dart 1.x Web 应用到 Dart 2 的相关信息。这些迁移变化是必须的因为:
-
-
Chrome 取代了 Dartium 和 content-shell。
-
新的编译系统取代了
pub build
、pub serve
以及 pub 变换器。
-
-
Dart 2 语言和库变化。
工具
Dart 2 的 Web 应用开发环境与 Dart 1.x 不同。以下是重点:
Dart 1.x | Dart 2 |
---|---|
Dartium, content shell | Chrome and the webdev tool
|
pub build |
webdev build |
pub serve |
webdev serve |
pub run angular_test |
dart run build_runner test -- -p chrome |
pub transformers | build package transformers. See: Transforming code |
代码
为了迁移到 Dart 2,你需要编辑你 Web 应用项目的一些文件:
-
pubspec.yaml
, 详细信息见下方。 -
包含
<script src="foo.dart"...>
标签的 HTML 文件, 比如web/index.html
,详细信息见下方。 -
由于 Dart 语言和库的变化,需要修改的 Dart 代码。
你可以对比 4.x
和 master
分支的任意示例应用来获取完整的迁移示例,比如这些:
Pubspec 文件
修改你 pubspec.yaml
文件的这些部分:
-
Add new
dev_dependencies
: -
在
dev_dependencies
添加新的节点:build_runner:
-
build_test:
,如果你正在运行测试 build_web_compilers:
-
删除
dev_dependencies
中的下列节点:browser
dart_to_js_script_rewriter
-
更新到
测试
版本 0.12.30 或更高;其会默认运行 Chrome 测试。 -
删除所有的
转换器
:angular
dart_to_js_script_rewriter
test/pub_serve
例如,angular-examples/quickstart/pubspec.yaml 是一个应用了这些差异修改的示例。
带脚本元素的 HTML
web/index.html
文件是一个使用了 <script>
元素的最常见栗子。你需要作出以下修改:
-
删除
<script defer src="packages/browser/dart.js"></script>
-
替换为
由<script defer src="foo.dart" type="application/dart"></script>
<script defer src="foo.dart.js"></script>
比如,查看这个 快速入门范例的 web/index.html 页面 在应用这些变化后的差异。
angular-examples/quickstart/web/index.html 中向你展示了如何应用这些更改。
其他资源
Dart 2 迁移指南 中有关于 Dart 2 变化的信息,以及如何从 Dart 1.x 版本迁移你的代码。