【问题标题】:Migration from RxJS 5 to RxJS 6 in Angular 4.3 project在 Angular 4.3 项目中从 RxJS 5 迁移到 RxJS 6
【发布时间】:2018-10-03 15:42:35
【问题描述】:

所以我有一个使用 RxJS 5.4.3 的 Angular 4.3.1 项目?我需要迁移到 RxJS 6 但保留现有版本的 Angular。我读了this 我应该做的指南和步骤是:

  1. rxjs 更新到 5.5 版本并修复可能的错误。
  2. 更新到 rxjs 6 并安装 rxjs-compat 以实现兼容性,修复 rxjs-compat 未涵盖的可能错误

而且我不需要更改现有代码:导入、添加管道等。一切都应该正常吗?

【问题讨论】:

标签: angular typescript rxjs migration


【解决方案1】:

几天前我在我的项目中遇到了同样的问题,安装“rxjs-compat”暂时解决了这个问题。但是,在一周之内,该项目开始抛出 rxjs 错误。最后,我还必须更改导入和管道。我强烈建议尽快更新您的代码以避免最后一分钟的错误。

【讨论】:

    【解决方案2】:

    RxJS v5.x 到 v6 更新指南 RxJS v6 已经到来!虽然这是一个主要的版本更改(从 5.x 到 6.x),但我们已经投入了大量工作以将重大更改保持在最低限度。在大多数情况下,这允许应用程序和库开发人员增量更新并使用 RxJS v6,而无需对其代码进行任何修改。

    向后兼容层简化了更新过程,让您在按照自己的节奏处理大多数代码更改的同时保持应用正常运行。整个过程可以分阶段进行:

    1. 更新到最新版本的 RxJS 5.5 并确保您已经修复了由错误修复引起的任何问题。

    2. 安装 RxJS v6 以及 backward-compatibility 包 rxjs-compat。

    3. 如果您的应用受到 rxjs-compat 未涵盖的少数 breaking changes 的影响,请根据以下提供的说明更新受影响的代码。

    4.最终,您将需要drop the compatibility layer 来完成对 RxJS v6 的更新。这样做会显着减小应用的大小。

    要重构 TypeScript 代码使其不依赖于 rxjs-compat,您可以使用 rxjs-tslint。

    npm i -g rxjs-tslint
    rxjs-5-to-6-migrate -p [path/to/tsconfig.json]
    
    1. 在 RxJS 版本 v7 之前,您需要删除和替换所有已弃用功能的使用。

    向后兼容性 为了尽量减少升级的影响,RxJS v6 发布了同级包 rxjs-compat,它提供了 v6 和 v5 API 之间的兼容层。大多数拥有现有应用程序的开发人员应该通过在 ^6.0.0 安装 rxjs 和 rxjs-compat 来升级:

    npm install rxjs@6 rxjs-compat@6 --save
    

    有关此包的详细信息,请参阅https://www.npmjs.com/package/rxjs-compat

    兼容性包会增加应用程序的捆绑包大小,因此我们建议您在应用程序和依赖项更新后立即将其删除。如果您使用的是 4.0.0 之前的 Webpack 版本,则会加剧这种大小增加。 有关删除 rxjs-compat 必须更新的内容的完整说明,请参阅Dropping the compatibility layer。另请注意,将您的应用程序完全更新到 v6 可能会暴露以前未显示的现有类型错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2018-11-09
      • 2018-11-27
      • 2020-01-10
      • 2019-08-02
      相关资源
      最近更新 更多