Angular 提供了改进后的迁移路径,包括 ng-upgrade 组件

  • David Iffland
  • 邵思华

2015 年 9 月 5 日

话题:JavaScript语言 & 开发

Angular 团队刚刚发布了从 Angular 1 平滑地迁移至 Angular 2 这一计划的更多信息

ng-conf 2015大会上,Angular 团队表示,新的路由功能可以进行增量式的升级,每次更新一个视图。在这篇博客文章中,Brad Green 表示:“从我们收到的反馈来看,虽然人们认可新的路由功能确实能够增量式升级,但这种增量做得还不够。因此,我们对迁移计划进行了重新审视与设计……”

新的迁移系统的强大能力来自于一个新的组件,名为 ng-upgrade,它能够处理以下这些方面的交互:

  • 依赖注入
  • 组件嵌套
  • Transclusion (嵌入)
  • 变更检测

一旦 ng-upgrade 的工作完成,开发者就能够混合并搭配使用 Angular 1 与 2 的服务、组件和视图。Green 说道:“ng-upgrade 库会自动让 Angular 1 中的可注入对象在 Angular 2 中可用。这也意味着你为 Angular 1 应用所设计的服务可以任意地注入 Angular 2 的组件或服务中了。”

与其让新版本通过一种不完善的方式模拟旧版本中的行为,更好的方式是让两个版本的引擎各自执行对应的代码。

最终结果就是,开发者能够逐步地将某个应用从 Angular 1 迁移至 Angular 2 中。

不过,新的路由功能也并未停止开发。Green 向 InfoQ 透露,在即将发布的一份开发者指南中,其中会引用最新的路由 API 文档

这份迁移计划对于那些还在担心是否要继续编写新的 Angular 1 项目的开发者来说是一个好消息。用户 escobar 在Hacker News 讨论版中就表示,他认为此次的迁移计划是一个良好的举措:

我在工作中的几个新应用中使用了 Angular

2 以进行评估,但很快就放弃它了,因为直至今日为止,新版本的迁移路径始终很不明确。如果缺少迁移路径,在眼下这一时刻选择在新应用中使用 v1 有些愚蠢,但 v2 又完全没有为在生产环境中使用做好准备。

Green 表示,他们正在计划撰写关于迁移的更多博客文章,包括一个详细的指南以及代码示例。Angular 团队也分享了一份设计文档,其中描述了有关新的迁移计划背后所涉及的策略的更多细节。新的 ng-upgrade 组件目前还不可用,但应当会随着 Angular 2 Beta 版本一起推出。只是目前还没有 Beta 版本推出的明确日期,Green 向 InfoQ 表示,在发布 Beta 版本之前,他们必须完成以下工作:

  • 在 4 周时间内不再出现破坏性的变更
  • 完成“语法糖”,让核心 API 与工具的使用体验更佳
  • 完成开发者指南的大约前 20 个部分,目前已经完成了其中的 4 个部分

查看英文原文:Angular Offers Refined Migration Path with ng-upgrade

JavaScript语言 & 开发