Proxy 安圭拉2镇静

Proxy 安圭拉2镇静,proxy,angular,composition,Proxy,Angular,Composition,我正在研究微服务,更确切地说是Angular2微服务。主要的想法似乎很简单,但它变得复杂,因为我想让不同的Angular2应用程序保持镇静 我的意思是,假设我有两个应用程序,我没有太多的控制权,应用程序a和应用程序B,由不同的团队创建,每一个服务于不同的东西(一个可能是2D查看器,另一个可能是3D查看器)。我正在考虑构建一种合成代理,在这种代理中,我定义了一个带有一些自定义标记(如)的html文件,然后让代理制作合成并将其提供给用户 我已经在网上搜索了一段时间了,但我似乎找不到任何关于angul

我正在研究微服务,更确切地说是Angular2微服务。主要的想法似乎很简单,但它变得复杂,因为我想让不同的Angular2应用程序保持镇静

我的意思是,假设我有两个应用程序,我没有太多的控制权,应用程序a和应用程序B,由不同的团队创建,每一个服务于不同的东西(一个可能是2D查看器,另一个可能是3D查看器)。我正在考虑构建一种合成代理,在这种代理中,我定义了一个带有一些自定义标记(如
)的html文件,然后让代理制作合成并将其提供给用户

我已经在网上搜索了一段时间了,但我似乎找不到任何关于angular2的文章。以下是我遇到的几个问题:

  • 包含脚本的顺序。由于每个应用程序可能需要包含不同的脚本,因此不按正确的顺序包含脚本可能会使整个应用程序崩溃

  • 构建一个全新的正确引导的“核心”组件,只有正确的组件被引导

  • 确保一个应用程序的css不会覆盖另一个应用程序的css

  • 命名问题,由于应用程序不同,我可能会遇到同名组件

对我来说,所有这些问题似乎都可以通过解析每个文件并相应地修改来解决。问题是,如果js文件同时被缩小和统一,那么同样的想法将不起作用。此外,对每个请求执行此操作需要大量的处理能力(我希望它有点热构建/加载)


关于构建这样的合成代理,我应该采取哪些方法?是否有任何示例/文档说明如何做到这一点?

我不确定我是否理解您想要做什么,但我可以从您的需求中看出,您所需要的只是开箱即用的Angular2功能

1) 包含脚本的顺序。因为每个应用程序可能需要 要包括的不同脚本,但不包括在右侧 订单可能会使整个应用程序崩溃

2) 构建全新的“核心” 正确引导的组件,只有正确的 正在引导的组件等等

3) 确保从一个css 应用程序不会覆盖来自其他命名问题的css,因为应用程序是 我可能会遇到同名的不同组件

我将回答你的观点:

1) 您只需在“应用程序路由”中使用动态模块加载,如下所示:

export function loadModuleA() {
    return System.import('./pages/module-A-view/a.module').then(mod => mod.ModuleA)
}

export function loadModuleB() {
    return System.import('./pages/module-B-view/a.module').then(mod => mod.ModuleA)
}

export const routes: Routes = [
    {
        path: 'core/sectionA',
        loadChildren: loadModuleA
    },
     {
        path: 'core/sectionB',
        loadChildren: loadModuleB
    },
如果您
导入
模块a中的库在模块B中不可用,除非您明确地
导出
它,否则每个模块a和模块B将有自己的依赖关系

2) 您可以在自己的模块文件(简单)中指定“核心”作为main
app.module.ts
和模块依赖项

3) 实际上,您只需要一个主样式表,然后每个组件都可以有自己的自定义文件。如果使用angular cli,例如每次创建新组件时,cli将生成组件文件、scss文件、html文件和规范文件。否则,您也可以自己轻松完成:

@Component({
    selector: 'whatever',
    templateUrl: './whatever.component.html',
    styleUrls: [ './whatever.component.scss' ]  
})
export class WhateverComponent

如果您想要一个特定于(比如)模块a的所有组件的样式表,那么我不知道怎么做。

应用程序不是服务。将观众和游戏结合起来到底有什么意义?观众游戏?我认为你应该从一个方面使用另一个方面的功能。然后我们回到了第一步:应用程序不是服务。@zeroflagL我正在寻找一种方法来组合来自不同服务器的完全不同的组件,每个组件都可以独立部署。也许称他们为微服务不是一个明智的选择,这个例子有点极端。一个更好的例子是左侧的2D查看器和右侧的3D查看器,每个查看器都由不同的团队开发。看起来最简单的方法就是使用iFrame。