在运行时

时间:2017-03-22 14:01:22

标签: angular webpack angular-module

是否有可能在我的角度2 app运行时从不同的服务器加载不同的模块,如果是这样,我怎么能实现这个?

我希望我的应用程序从隔离服务器(A,B,C)加载整个应用程序中的不同组件,因此可以从主应用程序和A中包含的任何组件中独立地删除和更新它们, B或C将不会被加载。底部显示的3个模块将具有组件,但主应用程序将在其中声明应加载组件的HTML。

Overview

更新

通过路由延迟加载不是我想要的,3个模块应该是完全独立的模块,它们有自己的存储库,项目,托管,enz。

1 个答案:

答案 0 :(得分:6)

有点晚了,但你可以在路线中使用延迟加载机制来完成你想要的。

本文阐述了如何从其他来源加载webpack模块: Solution: load independently compiled Webpack 2 bundles dynamically

在路由中,您在loadchildren部分中定义了一个回调:

const appRoutes: Routes = [
    {path: '', component: MainComponent},
    {path: 'modulea', loadchildren: loadModuleA}
]

loadModuleA方法如下所示:

export function loadModuleA() {

    return new Promise((resolve, reject) => {

        // the method from the article
        loadPlugin('path/to/server/of/moduleA', (exports) => {
            // The Submodule must export ModuleA
            resolve(exports.ModuleA);
        });

    });

}