如何使用 Angular 从不同的服务器或 CDN(运行时)动态加载子项?

Rob*_*bin 6 javascript node.js typescript webpack angular

如何A从服务器加载服务器上的惰性模块(loadchildren)B?我从谷歌搜索了几个链接,但是,我无法通过示例找到正确的答案。

当我的模块位于某些 CDN 上时,我发现如何在我的路由中加载儿童, 这可能与我的问题类似,但我不理解它的示例,而且答案对我来说似乎不完整。

我的问题是:

  1. 我是否需要编译包括惰性模块在内的整个项目?
  2. 我可以只编译惰性模块并通过 引用主模块loadchildren吗?
  3. 如何制作分离的主模块和惰性模块项目的捆绑包?
  4. 如果我将主项目和惰性模块分开,我是否也应该包含platformBrowserDynamic().bootstrapModule(FirstLazyModule )在惰性模块中?

我的要求是使用 webpack/angular 制作一组惰性模块并将其托管到服务器,B而主引导模块托管在服务器上A,我可以在运行时提供指向Routes主(引导程序)模块属性的惰性模块链接loadchildren

注意:我不想用惰性模块和主机块编译整个项目到不同的服务器。

例子

不了解惰性模块但仅 CDN 链接的应用程序路由。

// http links to load lazy modules from server B
const m1Link = 'http link of M1 which hosted on server B'
const m2Link = 'http link of M2 which hosted on server B'

const route:Routes = [
     { path:'M1', loadchildren: m1Link, canActive: m1Fn() },
     { path:'M2', loadchildren: m2Link, canActive: m2Fn() }
]
Run Code Online (Sandbox Code Playgroud)

懒惰模块

const routes: Routes = [{
    path: '',
    component: DefaultComponent,
    children: [{ path: '', component: LazyChildComponent}]
}];

@NgModule({
    imports:      [ CommonModule, RouterModule.forChild(routes) ],
    exports:      [ RouterModule ],
    declarations: [ LazyChildComponent ]
})
export class FirstLazyModule { }
Run Code Online (Sandbox Code Playgroud)