文章目录 一文大白话讲清楚webpack进阶——9——ModuleFederation实战 1. 啥是ModuleFederation 2. 创建容器应用 3. 创建远程应用 4. 启动远程应用 5. 使用远程应用的组件
一文大白话讲清楚webpack进阶——9——ModuleFederation实战
1. 啥是ModuleFederation
先看这篇文章,了解ModuleFederation 一文大白话讲清楚webpack进阶——8——Module Federation
2. 创建容器应用
创建项目并初始化, 安装webpack和webpack-cli 配置webpack.config.js
const ModuleFederationPlugin = require ( "webpack/lib/container/ModuleFederationPlugin" ) ;
const path = require ( "path" ) ; module. exports = { entry : './src/index.js' , mode : 'development' , output : { publicPath : 'auto' , } , plugins : [ new ModuleFederationPlugin ( { name : "sharedLib" , filename : "remoteEntry.js" , exposes : { './MyComponent' : './src/MyComponent.js' , } , shared : { react : { singleton : true , requiredVersion : '^17.0.0' } , 'react-dom' : { singleton : true , requiredVersion : '^17.0.0' } } } ) , ] ,
} ;
3. 创建远程应用
创建项目并初始化, 安装webpack和webpack-cli 配置webpack.config.js
const ModuleFederationPlugin = require ( "webpack/lib/container/ModuleFederationPlugin" ) ;
const path = require ( "path" ) ; module. exports = { entry : './src/index.js' , mode : 'development' , output : { publicPath : 'auto' , } , plugins : [ new ModuleFederationPlugin ( { name : "app" , remotes : { sharedLib : "sharedLib@http://localhost:3000/remoteEntry.js" , } , shared : { react : { singleton : true , requiredVersion : '^17.0.0' } , 'react-dom' : { singleton : true , requiredVersion : '^17.0.0' } } } ) , ] ,
} ;
4. 启动远程应用
5. 使用远程应用的组件
import React from 'react' ;
import ReactDOM from 'react-dom' ;
import MyComponent from 'sharedLib/MyComponent' ;
import App from './App' ; ReactDOM. render ( < React. StrictMode> < App / > < MyComponent / > < / React. StrictMode> , document. getElementById ( 'root' ) ) ;