主要 Ember 升级 - 1.12 到 3.5

Major Ember upgrade - 1.12 to 3.5

在不久的将来,我将认真更新应用程序。我对 ember.js 有一点经验,没有人可以帮我解决这个问题。该应用程序是用 ember 1.12 编写的,依赖项很少。它有一个用 cordova 编写的网页版和移动版 (iOS+Android) - 所有这些都需要升级。

我应该期待什么样的问题? 如何为他们做准备? 我应该估计多少时间? 任何帮助都会非常有用-这是我第一次进行应用程序升级。

我已经查看了这个链接,但大多数都是针对 2.0 以上版本的。

https://www.emberscreencasts.com/meta_guide_to_upgrading_ember https://medium.com/ingenious/how-to-upgrade-ember-js-to-3-x-and-live-to-fight-another-day-cfc28c16b726 http://www.ember-cli-diff.org/ https://medium.com/front-end-hacking/everything-you-need-to-know-to-upgrade-your-ember-js-app-including-ember-3-9de5e808dde0 https://medium.com/ember-ish/upgrading-ember-from-1-13-to-2-8-0-f1dbcecc40ca https://medium.com/front-end-hacking/how-to-use-ember-2-code-in-your-ember-3-app-9ed15c28bad6

根据您的应用程序的大小和您的测试套件的广泛程度,您可能需要花费至少 4 周的时间才能将 Web 版本升级到 3.5。

这个过程将是耗时且乏味的。
1.升级1个小版本(1.12->1.13)
2:运行 你的测试套件并修复出现的任何问题
3:通过导航手动测试该工具并修复出现的任何问题
4:在测试期间,您应该已经确定了一些弃用。解决这些问题。
5:重复步骤1-4
6: 升级到 2.0.0 后,如果您不使用私有 API 并且您的依赖项很小,您可以一次跳过几个次要版本。

Ember 维护他们的 [更新日志]( https://github.com/emberjs/ember.js/blob/master/CHANGELOG.md) as well as a page that lists deprecations and their solutions,因此您会希望成为您要升级到的版本的好友。对于他们提到的每个弃用,请检查链接的问题历史记录以查看建议的替换是什么。积极主动——不要等到最终版本才修复弃用。

您将遇到的 big/common 问题是:
视图已弃用并删除。您需要了解组件的工作原理并将任何现有视图迁移到组件。 select 助手被删除。
如果您的视图和组件使用 targetObject 来获取控制器,则您需要让它们在不执行的情况下工作。这意味着确定需要传入哪些属性和操作并明确执行。组件不应该知道调用它们的内容。

Ember 在 https://guides.emberjs.com/release/configuring-ember/handling-deprecations/ 有一个关于处理弃用的可靠指南,可能会有一些帮助。

保持您的更改版本化。你会破坏一些足够糟糕的东西,以至于更容易回滚并重试。如果您不使用版本控制,那么您将面临非常困难的时期。 最后,确保你在版本和擦除之间清理你的 npm 目录 - 如果你不这样做,你可能认为一切正常,但实际上不是。

正如 Patsy 评论的那样 - 您最好聘请非常了解 ember 的人来进行此升级。如果您对 ember 不是很了解,您可能会在其中进行修复,使您陷入困境。

我在 3.0 发布之前从 1.11 -> 2.18 升级了一堆 Ember 应用程序/插件。我不认为在 2.10 之前有一个次要版本升级没有破坏我的应用程序。

我还使用应用程序同时升级了 ember cli。我尝试将 ember cli 升级到最新版本,但我遇到了一堆神秘的错误并进入了某种死胡同。相反,我选择的是回顾 Ember 发行说明,看看 Ember 发布时哪个版本的 ember cli 是最新的。我会每 4 个版本左右升级一次 Ember cli,除非遇到问题我会立即升级。

最重要的是自动化测试。我看到你说你没有测试,只会手动测试,但这是愚蠢的。我有一堆代码需要升级,但没有经过测试。因为我有两周的时间进行升级,所以我在一周的时间内编写了综合测试。这些绝对是至关重要的,一些升级会破坏我 60-80% 的测试。如果没有测试,我可能会花 2 个月的时间,但我在 2 周内完成了测试,使用第一个来编写所需的额外测试。

综合测试最好,但远非必要。至少我会建议您花时间模拟您的 API 调用并为应用程序的每个页面编写验收测试作为冒烟测试。测试就像转到 url 并检查 dom 是否存在一样简单。 Ember cli page object 非常有帮助 + html5 test-* 数据 类。

完成后,请按照@Trenton Trama 的建议进行操作。升级次要版本,运行 测试,修复问题,冲洗并重复直到完全升级。