webpack5 Module Federation 模块联邦

2021-06-28  本文已影响0人  带刀打天下
一、Module Federation 介绍

多个独立的构建可以组成一个应用程序,这些独立的构建之间不应该存在依赖关系,因此可以单独开发和部署它们。

这通常被称作微前端,但并不仅限于此。

官方文档

二、配置

ModuleFederationPlugin

new ModuleFederationPlugin({
 name: "app1",
 library: { type: "var", name: "app1" },
 filename: "remoteEntry.js",
 remotes: {
    app2: 'app2',
    app3: 'app3',  
},
  exposes: {
    antd: './src/antd',
    button: './src/button',  
},
  shared: ['vue', 'vue-router'],
})

参数参考资料:ModuleFederationPlugin.json

三、使用

子应用

主应用

四、效果

子应用

子应用.jpg

主应用

主应用.jpg
五、错误处理
vue.runtime.esm.js:623 [Vue warn]: Failed to resolve async component: function Button() {
      return __webpack_require__.e(/*! import() */ "webpack_container_remote_app1_Button").then(__webpack_require__.t.bind(__webpack_require__, /*! app1/Button */ "webpack/container/remote/app1/Button", 23));
    }
Reason: ChunkLoadError: Loading chunk vendors-node_modules_vue-hot-reload-api_dist_index_js-node_modules_vue-loader_lib_runtime_com-3bffdf failed.

解决:删除 publicPath 配置,如果需要配置如下

output: {
    filename: 'bundle.js',
    path: path.join(process.cwd(), '/dist'),
    publicPath: 'http://localhost:3000/'
  },
六、动态远程容器

参考资料:

上一篇下一篇

猜你喜欢

热点阅读