有角度的多个项目

时间:2018-12-18 17:46:30

标签: angular angular-elements micro-frontend

我正在按照以下条件进行概念验证:

enter image description here

  1. 允许每个菜单项位于不同的Bitbucket项目中。
  2. 构建单个组件而不会破坏其他组件。
  3. 这些组件可以互相通信。
  4. 如果其中一个组件更新,则所有应用程序都必须自动查看此组件的最新版本。
  5. 所有团队将使用以下版本:
    • Angular CLI:7.0.7
    • 节点:10.13.0
    • 角度:7.0.4

我使用Angular元素作为示例,扩展了HTML。
每个有角团队都通过注册其标签来生成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 main内部动态创建标签。

menu team1 >> this.renderer.createElement ("team1")
menu team2 >> this.renderer.createElement ("team2")
menu team3 >> this.renderer.createElement ("team3")

例如,如果任何团队需要访问Web服务以填充表,则该表将在之前呈现。
因此,我在Web服务中执行了请求,然后动态创建了表标签,并将参数传递给Popular。
在Angular项目中,不需要此功能即可正常工作。但是有了Angular元素,我就这样了:

this.data = data returned from webservice
const element = this.renderer.createElement ("component-table");
this.renderer.setProperty (element, "data", this.data);

所有这些都有效,但是我发现很难使用createElement。

我可以在主项目中提出此Web服务请求并通过参数:

<team1 data = "data"> </ team1>

使用此方法,对Web服务的所有请求都将在主项目中,并且所有团队都必须在此项目中进行编码。

  1. 还有其他可能性吗?
  2. 您能继续这样做吗,但要用一种不太复杂的方式?

2 个答案:

答案 0 :(得分:0)

面临的挑战是构建独立的UI应用程序,这些应用程序可以彼此独立开发和部署,但仍然可以组合为一个单元进行部署。这是我们的操作方式。

您将需要安装Angular CLI,创建Angular工作区:

ng new my-app --routing

然后运行它:

cd my-app

ng serve -o

创建您的子应用程序

现在,将多个应用程序功能直接烘焙到Angular CLI中,因此本文将重点介绍该功能。我们要使用ng generate application而不是使用ng new创建工作区。这将创建一个新应用程序,位于默认应用程序的旁边:

ng generate application app1 --routing

ng generate application app2 --routing

这可能看起来像您对Angular项目的期望:

  • e2e:用于端到端测试
  • node_modules:必须安装的所有软件包 应用程序运行。
  • src:主应用程序的源
  • src / app:主要的应用代码。
  • src / assets:主应用程序的资产文件夹
  • src / environments:环境配置

项目目录包括:

app1:第一个自定义子应用程序的源代码

  • app1 / app:app1的源代码。
  • app1 / assets app1的资产。
  • app1 / environments:app1的环境配置。
  • app1-e2e:app1的端到端测试。
  • app2:第二个自定义子应用程序的源代码。
  • app2 / app:app2的源代码。
  • app2 / assets app2的资产。
  • app2 / environments:app2的环境配置。

要运行一个子应用程序,只需使用ng serve的project参数,如下所示:

ng serve –-project app1

整篇文章为here

答案 1 :(得分:0)

首先ng generate application app1 --routing运行良好,然后在运行ng generate application app2 --routing后出现此错误:未知选项:'--routing'