ngUpgrade 性能注意事项

ngUpgrade performance considerations

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

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

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

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

Everything that happens in the application runs inside the Angular 2 zone. This is true whether the event originated in Angular 1 or Angular 2 code. The zone triggers Angular 2 change detection after every event. The UpgradeModule will invoke the Angular 1 $rootScope.$apply() after every turn of the Angular zone. This also triggers Angular 1 change detection after every event.

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

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

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

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

您应该知道 bootstrap 混合应用程序有两种方法:

  1. UpgradeModule - bootstrapAngularJS (v1) 和 Angular (v6) 框架都在 Angular区域

  2. DowngradeModule - bootstraps AngularJS 在 Angular 区域之外,并使两个变化检测系统分开。

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