我们可以在同一端口下托管两个角度项目吗

时间:2019-06-19 04:27:59

标签: angular iis hosting iis-10

我在angular2中开发了两个有角度的项目。一种是公共门户,另一种是管理员。如果我将主门户网站托管为http://myaddress.com,则需要在其下托管管理员。即。网址应为http://myaddress.com/admin。这必须在IIS中进行测试。

2 个答案:

答案 0 :(得分:2)

您只需要将两个项目托管在各自的目录中(需要IIS配置),并使用base-href选项构建/部署应用程序:

ng build --prod --base-href=/admin // admin app
ng build -- prod // public app

答案 1 :(得分:1)

我的回答基本上是理论上的。

  1. 创建一个admin项目的npm捆绑包(例如ng-packagr会有所帮助)。有一种格式可以公开您要在此项目外部访问的所有模块。您可以在Google上找到有关此信息的详细信息。像index.ts
  2. 将其作为package.json包含在主项目的dependency中。
  3. 尝试在MainProject内创建路由,并在路由中使用延迟加载以提高性能。像这样:
export const AppRoutes: Routes = [
    {
        path: '',
        component: 'IAmINMainProjec',
        canActivate: [TrafficGuard],
        pathMatch: 'full'
       // and what not..
    },
    {
        path: 'admin',
         loadChildren:
                    './modules/widget-wrappers/#AdminWrapperModule',
        canActivate: [AuthGuard]
    },

AdminWrapperModule


@NgModule({
    imports: [
        CommonModule,
        AdminModule,
    ]
})
export class AdminWrapperModule{}

上面的代码仅供参考:D

更新

在我的项目中,我们有几个与admin类似的模块(准确地说是4个),并且我们意识到要构建4个项目(每个项目都有构建时间)非常耗时大约7分钟)。因此,我们最终实现了nrwl。该工具帮助我们将所有4个项目拉到主项目下。这有助于减少时间,因为在实际部署代码之前,我们不再需要构建2个项目(一个Admin和另一个MainProject)。如果确实需要,请看看它。如果您需要更多的项目隔离,那么不要使用Nrwl