【发布时间】:2019-05-19 04:37:21
【问题描述】:
我正在使用以下标准进行概念验证:
- 允许每个菜单项位于不同的 Bitbucket 项目中。
- 在不破坏其他组件的情况下构建单个组件。
- 组件可以相互通信。
- 如果其中一个组件更新,所有应用程序都必须自动查看该组件的最新版本。
- 所有团队都将使用以下版本:
- Angular CLI:7.0.7
- 节点:10.13.0
- 角度:7.0.4
- Angular CLI:7.0.7
我使用 Angular 元素做了一个示例,扩展了 HTML。
每个 Angular 团队通过注册其标签生成 JavaScript 文件(team1.js、team2.js、team3.js)来进行部署。
例子:
<team1> </ team1> customElements.define("team1", ....);
<team2> </ team2> customElements.define("team2", ....);
<team3> </ team3> customElements.define("team3", ....);
具有菜单的主 Angular 应用程序导入 JavaScript 文件(team1.js、team2.js、team3.js),当点击每个菜单时,标签会在 div 主目录中动态创建。
menu team1 >> this.renderer.createElement ("team1")
menu team2 >> this.renderer.createElement ("team2")
menu team3 >> this.renderer.createElement ("team3")
例如,如果任何团队需要访问 Web 服务来填充表格,则表格会在之前呈现。
因此,我在 web 服务中执行请求,然后动态创建表格标记并将参数传递给流行。
在 Angular 项目中,它可以正常工作而无需此操作。但是对于 Angular 元素,我就是这样:
this.data = data returned from webservice
const element = this.renderer.createElement ("component-table");
this.renderer.setProperty (element, "data", this.data);
所有这些都有效,但我发现很难使用 createElement。
我可以在主项目中提出这个网络服务请求并通过参数:
<team1 data = "data"> </ team1>
所有对 web 服务的请求都在主项目中,所有团队都必须在这个项目中编码。
- 还有其他可能吗?
- 您可以继续这样做,但要以一种不那么复杂的方式吗?
【问题讨论】:
-
你看到了吗:nrwl.io/nx/guide-nx-workspace 他们在这个领域做了很多工作,并且使用 Angular 库有一个经过深思熟虑的解决方案。
标签: angular angular-elements micro-frontend