gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:36:13 26 4
gpt4 key购买 nike

如何在服务器上从服务器加载惰性模块(loadchildren)?
我已经搜索了几个链接从谷歌,但我找不到正确的答案与一个例子。
我发现这个How can I loadChildren in my Routes when my module is on some CDN可能与我的问题类似,但我不理解它的例子,答案对我来说似乎不完整。
我的问题是:
我需要编译整个项目,包括懒惰模块吗?
我可以只编译惰性模块并通过A引用主模块吗?
如何将分离的主模块和惰性模块项目捆绑在一起?
如果我将主项目和lazy模块分开,我是否也应该在lazy模块上包含B
我的需求是使用WebPAC/DALK来构造一个懒惰模块,并将其托管到服务器loadchildren,而主引导模块则被托管在服务器platformBrowserDynamic().bootstrapModule(FirstLazyModule )中,在这里,我可以在运行时提供一个懒惰的模块链接到B主(引导程序)模块属性的A
注意:我不想用惰性模块和主机块编译整个项目到不同的服务器。
例子
应用程序路由,不知道懒惰模块,但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() }
]

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

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

最佳答案

角路由加载子路由的工作方式是将每个延迟加载的模块创建为块,并在匹配该路由时延迟加载该模块。
如果希望生成的块分布在多个CDN或服务器上?然后,您唯一的选择就是自己在角度源代码中进行更改并进行自定义构建。
如果要包含从不同源生成的角度模块块以供加载,它将不起作用,在依赖项注入时将失败。这是一个安全问题,框架无论如何都不允许这样做。
但是你可以加载JavaScript文件(不是角度编译模块)。在模块内部运行时,必须动态创建脚本标记。但是你不能在脚本中使用角度特征。

关于javascript - 如何使用Angular从不同的服务器或CDN(运行时)动态加载子级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50343503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com