我正在使用以下标准进行概念验证:
- 允许每个菜单项位于不同的 Bitbucket 项目中。
- 在不破坏其他组件的情况下构建单个组件。
- 组件可以相互通信。
- 如果其中一个组件更新,所有应用程序都必须自动查看该组件的最新版本。
- 所有团队都将使用以下版本:
- 角 CLI:7.0.7
- 节点:10.13.0
- 角度:7.0.4
- 角 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 服务的所有请求都将在主项目中,所有团队都必须在这个项目中编码。
- 还有其他可能性吗?
- 你能继续那样做吗,但用一种不那么复杂的方式?