Webpack5 新功能 Module Federation 用法

Webpack5 新功能 Module Federation 的作用就是:

让不同项目的模块可以通过远程提供给其它项目使用 而这个功能在一个叫ModuleFederationPlugin 插件内实现

ModuleFederationPlugin 插件

Module Federation 模块共享整体是通过ModuleFederationPlugin这个插件串联起来的。

Remote: 提供模块共享服务
Host: 获取共享的模块

原理图如下:
在这里插入图片描述

Remote 配置:

//webpack.config.js
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin')

module.exports = {
  ...
   devServer: {
    port: 8080
  },
  plugins: [
    new ModuleFederationPlugin({
       name:'remoteVar', //必须,唯一 ID,作为输出的模块名,使用的时通过 ${name}/${expose} 的方式使用;
       filename:'remoteEntry.js', // 构建出来的文件名
       exposes:{ //可选,表示作为 Remote 时,export 哪些属性被消费;
           './NewsList':'./src/NewsList'
       },
       shared:['react','react-dom'] //可选,优先用 Host 的依赖,如果 Host 没有,再用自己的;
    })
  ]
}

Host 配置:

//webpack.config.js
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin')

module.exports = {
  ...
  devServer: {
    port: 8081
  },
  plugins: [
    new ModuleFederationPlugin({
       remotes:{ //可选,表示作为 Host 时,去消费哪些 Remote;
           remote:'remoteVar@http://localhost:8080/remoteEntry.js'
           hostRemote:'hostRemoteVar@http://localhost:8082/remoteEntry.js'
       },
       shared:['react','react-dom']    
    })
  ]
}

消费导入的远程remote:

let RemoteNewList = await import('remote/NewsList');
let RemoteNewList = await import('hostRemote/Slides');

Host / Remote 配置:

//webpack.config.js
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin')

module.exports = {
  ...
  devServer: {
    port: 8082
  },
  plugins: [
    new ModuleFederationPlugin({
       name:'hostRemoteVar',
       filename:'remoteEntry.js', // 构建出来的文件名
       remotes:{  //可选,表示作为 Host 时,去消费哪些 Remote;
           remote:'remoteVar@http://localhost:8080/remoteEntry.js',
        },
        exposes:{ //可选,表示作为 Remote 时,export 哪些属性被消费;
		   './Slides':'./src/Slides'
        },
        shared:['react','react-dom']    
    })
  ]
}

消费导入的远程remote:

let RemoteNewList = await import('remote/NewsList');

深入了解 Module Federation 详情

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值