8

我试图弄清楚我们是否可以将 Angular 1 应用程序迁移到 Angular 2。我们有足够数量的代码来保证使用ng-upgrade,而不是从头开始。

我们当前的应用程序正在推动 Angular 1 的性能极限。希望 Angular 2 能给我们带来一些性能上的好处。

我的问题是我们的迁移路径会对性能产生多大影响(即按照ng-upgrade指南运行 Angular 1 和 Angular 2)?它会产生明显的影响还是在实践中不会引起注意?在此期间,我主要关心的是运行时速度,而不是内存使用或加载时间。

4

3 回答 3

4

不确定这个线程是否仍然相关,我会尝试添加一些进一步的注释。目前我们处于 Angular 6,升级行为已经变得更好。

对于任何有性能问题或认为可能存在问题的人,我建议查看 downgradeModule ( https://angular.io/api/upgrade/static/downgradeModule#differences-with-upgrademodule )

您基本上可以升级 Angular 1 部分或降级 Angular 2 部分。乍一看,它们可能看起来相似,但行为根本不同。对于任何关心性能的人,我绝对推荐后一种方法。这样,您的新 Angular 2 代码的性能将得到改进,而旧代码的运行速度几乎相同/如果不同的话。

即使对于相当大的应用程序,这也是轻而易举的事,而且您很少遇到任何性能问题。

于 2018-07-24T09:11:25.103 回答
3

您应该知道有两种方法可以引导混合应用程序:

  1. UpgradeModule - 在 Angular 区域中引导 AngularJS (v1) 和 Angular (v6) 框架

  2. DowngradeModule - 在 Angular 区域之外引导 AngularJS,并保持两个变更检测系统分开。

我已经尝试了两种方法。我建议使用DowngradeModule- 它对性能和内存泄漏更好。

于 2018-09-08T09:42:57.680 回答
2

我目前处于类似情况,我唯一知道的是 A1 和 A2 的消化周期相互触发。这让我觉得在升级过程中,事情会变慢......如果我在接下来的几个月里发现任何不同之处,我会更新你。 https://angular.io/docs/ts/latest/guide/upgrade.html#!#change-detection

应用程序中发生的一切都在 Angular 2 区域内运行。无论事件源自 Angular 1 还是 Angular 2 代码,都是如此。该区域在每个事件之后触发 Angular 2 更改检测。UpgradeModule 将在 Angular 区域每转一圈后调用 Angular 1 $rootScope.$apply()。这也会在每个事件之后触发 Angular 1 更改检测。

于 2016-12-07T01:17:26.123 回答