【问题标题】:Is it possible to run multiple apps with different angular versions on one page?是否可以在一页上运行具有不同角度版本的多个应用程序?
【发布时间】:2017-02-11 17:40:38
【问题描述】:

我想在一页上运行多个 angular2 应用程序。此外,它们应该在不同的版本中运行。

我知道:Angular 被设计为单页应用程序框架,因此我描述的用例非常奇特。不过我想知道理论上是否可行?

我已经设法让它运行,我唯一的问题是,zone-js 在全局命名空间中有一个变量,并且在多次加载时会引发错误。当我只加载一次 zone-js 时,两个 Angular 应用程序并排运行。您可以在 dom 中看到不同的角度版本。

但现在我的问题更详细了:在一个页面上并排运行两个 Angular 应用程序时,我是否需要担心?只加载一次其他依赖项有意义吗?当 Angular 主要版本 4 可能依赖于另一个 zone-js 主要版本时怎么办 - 我无法将它们都加载到一个页面上?是否可以两次加载所有 webpack 包(inline.bundle.js、vendor.bundle.js、main.bundle.js)?

【问题讨论】:

  • 您当然可以通过 hack 或变通方法找到方法来完成这项工作,但您的解决方案可能非常脆弱。无论如何,这样做没有任何意义。您可能会遇到问题,在其中一个应用程序中更新某些内容会导致另一个应用程序发生意外情况。如果这是同一个项目,您为什么不花时间整合多个部分?如果你只是想重用一些组件,那么有办法设计可重用的组件....
  • 理想的情况是:平台上的不同应用程序彼此隔离,因此无论其他应用程序的依赖关系如何都可以运行,但这就是我问的原因:确实有角度其他“全局”除了 zone-js 之外会相互干扰的依赖项?如果不是,您将不会遇到“在其中一个应用程序中更新某些内容会导致另一个应用程序发生意外情况”的问题..目标是,您可以开发具有新角度版本的新应用程序,并且不一定有立即将其他(已完成的)应用程序迁移到较新的 Angular 版本
  • 我认为这两个版本的路由器部分都会遇到一些困难。两个应用程序都会更改并读取浏览器 URL。我不认为那会很漂亮。
  • 根据您提出的问题和 cmet,您似乎对什么是“应用程序”有一个不同寻常的想法......以及您所说的“平台”到底是什么意思? angular 是一个浏览器框架,实际上不可能让一个以上的 JavaScript 脚本与另一个脚本“隔离”,从你试图建议的意义上说......
  • 是的,就您在此处描述的内容而言,Angular 对 DOM、浏览器历史记录、网络服务等内容有许多“全局”依赖。 @DavidWalschots 提供了许多示例之一,这将使一个浏览器页面上的两个应用程序非常具有挑战性。

标签: javascript angular typescript


【解决方案1】:

我们正在尝试解决类似的问题,我们发现meta-framework 可以令人满意地管理微前端 (SPA) 事实上,我们能够引入由不同团队使用不同 JS 框架构建的其他 SPA几乎没有任何努力。

可能有很多理由反对这样做,因为这样的应用程序可能并不完全被称为高性能。我想说在我们的案例中进行这样的事情的原因是需要联合开发:我们有很多小团队,它们不是在同一地点和独立的,就交付时间表而言,这有助于我们之前构建的庞大应用程序.net 平台作为一个单一的 MV* web 应用程序。

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2016-05-02
    • 2019-11-05
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多