首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpack缩短物业名称

Webpack缩短物业名称
EN

Stack Overflow用户
提问于 2020-10-23 06:39:24
回答 1查看 127关注 0票数 0

我们有Vue 2.x.x应用程序(类型记录),我们的应用程序应该划分为模块。如/users、/articles、/reports等,它是一种微前端结构。

例如,这个解决方案:https://itnext.io/setup-a-micro-frontend-architecture-with-vue-and-single-spa-2c89528bf72f

我们希望基于用户权限动态加载这些模块,因此我们决定选择SystemJS。

代码语言:javascript
复制
export const ApplicationModuleService = {
   
    
        createModule(name: string, url: string, activeWhen = "/", props = {}): RegisterApplicationConfig {
            return {
                name,
                app: () => window.System.import(url), //system js is loading from cdn. in global.d has definition
                activeWhen,
                customProps: props
            }
        }
    }

我们从CDN中导入了SystemJS,当我们与webpack传输时,我们不能使用System.import,但是我们不得不使用window对象。

当我们试图使用System.import时,webpack将其转化为缩短的属性,如:l.import(.)我们曾试图与webpack、DefinePlugin、ProvidePlugin等人共同打造全球道具,但没有奏效。

有没有办法,怎么解决呢?谢谢您抽时间见我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 09:06:09

如果您已经在使用webpack,则没有理由使用System.js作为模块加载程序。

Webpack有内置的延迟加载模块的功能。

您所需要做的就是使用import('path/to/my/lazy/module'),它返回一个在加载模块时将解析的Promise。Webpack将处理剩下的工作。

您的代码应该如下所示:

代码语言:javascript
复制
export const ApplicationModuleService = {
  createModule(name: string, url: string, activeWhen = '/', props = {}): RegisterApplicationConfig {
    return {
      name,
      app: () => import('path/to/lazy/module')
      activeWhen,
      customProps: props,
    };
  },
};

对于CDN支持,可以指定publicPath选项。

有关更多信息,阅读这篇文章

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64495082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档