gpt4 book ai didi

angularjs - 是否有 ngUpgrade 的替代方案来并行运行 Angular 和 Angularjs,或者选择退出 ngUpgrade 的 $digest 触发器?

转载 作者:行者123 更新时间:2023-12-02 11:29:56 29 4
gpt4 key购买 nike

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

以下是我正在考虑的一些可能解决方案;它们中的任何一个比其他的更“标准”(或者风险/错误更少)吗?

  • 使用 ngUpgrade 的本地修改版本,并删除对 rootScope.$digest() 的调用
  • 在 iframe 中托管升级后的 Angular 组件,并使用 postMessage() 与应用交互
  • 在 Web 组件中托管升级的 Angular 组件(尚未研究在这种情况下通信如何工作)
  • 从同一个文档引导 angular.js 和 Angular 应用,让它们都在页面上处理自己的指令/组件

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

最佳答案

引导混合应用程序有两种方法:

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

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

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

关于angularjs - 是否有 ngUpgrade 的替代方案来并行运行 Angular 和 Angularjs,或者选择退出 ngUpgrade 的 $digest 触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45818561/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com