对于 运行 angular 和 angularjs 并排有没有 ngUpgrade 的替代方案,或者选择退出 ngUpgrade 的 $digest 触发器的方法?

Are there any alternatives to ngUpgrade for running angular and angularjs side-by-side, or a way to opt out of ngUpgrade's $digest triggers?

我有一个相当大的 angular.js 1.6 应用程序,我想迁移到 Angular,但是使用 ngUpgrade 会导致触发太多 $digests(即每次 Zone.onMicrotaskEmpty 被解雇)。不幸的是,我正在迁移的应用程序在性能方面已经不是很好,所以每增加一个 $digest 都是一笔不小的数目。虽然我可以使用 ngZone.runOutsideAngular() 来缓解这种情况,但我真正想要的是完全禁用升级模块自动触发 $digests,并在必要时手动触发它们;由于该应用程序由粗粒度组件组成,我将逐个迁移这些组件,因此几乎不需要更改 Angular 来触发 angular.js.[=16= 中的 $digest ]

以下是我正在考虑的一些可能解决方案;他们中的任何一个比其他人更"standard"(或风险更小/更容易出错)吗?

更新 (8/23): 现在我尝试选项 1(本地修改升级 js 文件);虽然我通常喜欢避免做这样的事情,但这似乎是迄今为止最安全的选择。

bootstrap 混合应用有两种方法:

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

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

两种方法我都试过了。为了避免 $digest 和性能的所有问题,我建议使用 DowngradeModule