【问题标题】:ngUpgrade performance considerationsngUpgrade 性能注意事项
【发布时间】:2017-01-24 10:32:54
【问题描述】:

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

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

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

【问题讨论】:

  • 一年后有什么反馈吗?

标签: angularjs angular ng-upgrade


【解决方案1】:

我目前处于类似情况,我唯一知道的是 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 更改检测。

【讨论】:

  • 结果如何? 2 年后,我很好奇你是否看到了减速。谢谢!
【解决方案2】:

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

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

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

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

【讨论】:

  • 谢谢 Nicolas... 您是否使用过 Angular CLI 以及它在升级方面是如何工作的?目前我们的 NG1 应用程序正在使用自定义 webpack 配置,但希望迁移到 Angular CLI - 不确定它是否支持 AngularJS / Angular 混合应用程序?
  • 不,也使用自定义 webpack 并且像魅力一样工作。不能使用 Angular CLI,因为自定义的东西太多(如果你有很多自定义的东西要做,他们甚至建议自己使用 webpack)。但是 AFAIK 升级 ng1/ng2 的基本设置也适用于 Angular CLI
  • 嗨 Nicolas.. 我终于有时间测试了.. 让 downgradeModule 工作(我认为)但是当我使用 downgradeComponent 时,什么都没有呈现。你遇到过这个问题吗?有没有机会请你看看? stackoverflow.com/questions/52482934/…
  • 嗨,克里斯,为您的帖子添加了答案
【解决方案3】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2017-06-15
    • 2013-06-04
    • 2012-08-22
    • 2012-12-16
    相关资源
    最近更新 更多