本章将指引你完成从 Dart 1.x web 应用到 Dart 2 的迁移。由于以下原因,这些改变是必要的:
-
工具改变:
- Chrome 代替 Dartium 和 content-shell.
- 一个新的编译系统代替
pub build,pub serve, pub transformers.
- Dart 2 语言和库改变。
工具
Dart 2 的 web 应用开发环境不同于 Dart1.x。以下是亮点:
| Dart 1.x | Dart 2 |
|---|---|
| Dartium, content shell | Chrome 和 dartdevc |
pub build |
pub run build_runner build. 查看: build_runner build
|
pub serve |
pub run build_runner serve. 查看: build_runner serve
|
pub run angular_test |
pub run build_runner test -- -p chrome. 查看: Running tests
|
| pub transformers | build package transformers. 查看: Transforming code |
代码
要迁移到 Dart 2,你需要编辑你的 web 应用的项目文件:
-
pubspec.yaml, 看下面的详情。 - HTML 文件中的
<script src="foo.dart"...>元素, 例如web/index.html。 看下面的详情。 - Dart 代码,由于Dart 语言和库的改变。
对于迁移应用的完整例子,比较 angular-examples 应用的任何一个master和5-dev分支,如这些:
Pubspec
对你的pubspec.yaml文件做出如下改变:
- 添加新的
dev_dependencies:build_runner: ^0.8.2-
build_test: ^0.10.1,如果要运行测试 build_web_compilers: ^0.3.6
- 移除
dev_dependencies:browserdart_to_js_script_rewriter
- 升级
test版本 0.12.30 或更高;它默认使用 chrome 做测试。 - 移除所有的
transformers:angulardart_to_js_script_rewritertest/pub_serve
例如,这里 angular-examples/quickstart/pubspec.yaml 是应用这些改变后的差异。
HTML 中的 script 元素
使用<script>元素最常见的示例文件是web/index.html。你需要做出如下改变:
- 移除
<script defer src="packages/browser/dart.js"></script> - 使用
<script defer src="foo.dart.js"></script>代替<script defer src="foo.dart" type="application/dart"></script>
这里 angular-examples/quickstart/web/index.html 是应用了这些改变后的差异。
额外的资源
- Dart 2 更新:关于 Dart 2 中变化的信息,以及如何从 Dart 1.x 迁移你的代码。
- 更新日志: 列出制作本网站的文档和示例的变化。









网友评论