目前还没有代码可以显示,我只是对Angular不够熟悉,不知道如何实现这项工作。基本上,我公司中的另一个团队拥有一个托管小部件的Angular 6应用程序,我们将制作一个Angular 6应用程序,其中包含多个有意义的小部件,这些小部件可以出现在另一个团队的产品中(他们的用户希望查看我们的小部件)无需登录到单独的系统)。
这里有很多官僚作风,这使这个挑战变得很艰巨,其他团队希望我们的团队尽可能孤立。我们有一个OpenShift开发,测试和生产环境,它们具有相同的环境。我们的小部件非常复杂,以至于它们不想拥有它们的开发。
理想情况下,我们将能够以某种方式部署Angular组件,并且小部件将在其项目中进行更新,而无需他们参与,或者我们必须访问其任何代码或OpenShift Pod(一次放置基础代码除外)基础架构)。有点类似于iframe html标签,但这违反了我公司的安全协议。
我曾经有一些想法是为Angular项目创建一个NPM软件包,该软件包将在我们公司的NPM存储库中,它们将包括并显示项目中的相关组件,但是当我们部署新代码时,回收他们的OpenShift Angular吊舱以安装新版本的NPM软件包,他们(合理地)不想让我们访问他们的OpenShift环境或参与我们的发布。
另一个想法是从他们的有角项目中分离出一个功能分支,我们将在我们的开发OpenShift环境中托管它,但是从不升级到我们的测试或生产OpenShift环境,而是将其合并到他们的开发分支中,并且它将沿他们的CI前进/ CD管道进入他们的OpenShift开发/测试,然后手动推送到产品。这将需要我们团队之间进行大量协调,但是,由于我们的代码会定期合并,并且担心我们的代码会破坏其CI / CD管道,并且由于我们的代码,他们无法继续进行开发工作没有通过测试等。
除此之外,是否有任何Angular功能或OpenShift功能可用于将组件(甚至是HTML)注入到他们的Angular项目中?显然,任何解决方案都需要我们团队之间的协调,但我们更希望他们:
答案 0 :(得分:1)
由于您要排除npm libs,替代方法是在目标应用程序从中获取脚本的CDN中提供小部件。通常,此类脚本应进行版本控制,但在您的情况下,“最新”版本的问题可能较少。
由于两个项目都使用Angular,因此在部署新版本的脚本之前,请确保始终使用相同的版本(或者至少要彻底测试它们是否兼容)。
通过将Web组件(角度元素)与Shadow DOM结合使用,可以使此功能更加健壮。