大型Ember升级-1.12至3.5

时间:2018-10-29 13:06:55

标签: javascript cordova ember.js ember-cli

在不久的将来,我将对应用程序进行认真的更新。我对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

2 个答案:

答案 0 :(得分:2)

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

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

Ember维护他们的[changelog]( https://github.com/emberjs/ember.js/blob/master/CHANGELOG.md)以及列出deprecations and their solutions的页面,因此您将要成为要升级到的版本的伙伴。对于他们提到的每一次过时,请检查链接的问题历史记录以查看建议的替代方法。积极主动-不要等到最终版本解决弃用问题。

您将遇到的主要/常见问题是:
视图已弃用并删除。您需要了解组件的工作原理,并将所有现有视图迁移到组件。 选择助手被删除。
如果您的视图和组件使用targetObject来获取控制器,则需要使它们工作而不进行操作。这意味着确定需要传递哪些属性和操作,并明确地进行操作。组件应该什么都不知道。

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

保留更改的版本。您会破坏一些糟糕的东西,以至于回滚再试更容易。如果您不使用版本控制,那么您将陷入困境。 最后,请确保在版本和擦除之间清除npm目录-如果不这样做,则可能一切正常,但实际上没有。

正如Patsy所评论-最好聘请熟悉余烬的人进行此升级。如果您不太了解余烬,那么您可能正在将修补程序放到角落。

答案 1 :(得分:0)

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

我还同时通过该应用程序升级了ember cli。我尝试将ember cli升级到最新版本,但是我遇到了一堆隐秘的错误,并且陷入了死胡同。相反,我选择的是回顾Ember发行说明,看看哪个版本的ember cli是Ember发行时的最新版本。我将每四个版本左右升级Ember cli,除非遇到问题,我将立即升级。

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

综合测试是最好的,但远远没有必要。我至少建议您花时间模拟API调用,并为用作冒烟测试的应用程序的每个页面编写一个接受测试。该测试非常简单,只需转到URL并检查dom是否存在。 Ember cli page object极大地帮助了html5 test-*数据类。

完成此操作后,请遵循@Trenton Trama的建议。升级次要版本,运行测试,解决问题,冲洗并重复直到完全升级。