2. 创建容器应用
const ModuleFederation Plugin = require ( "webpack /lib/container/ModuleFederation Plugin" ) ;
const path = require ( "path" ) ; module. exports = { entry : './src/index.js' , mode : 'development' , output : { publicPath : 'auto' , } , plugins : [ new ModuleFederation Plugin ( { 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. 创建远程应用
const ModuleFederation Plugin = require ( "webpack /lib/container/ModuleFederation Plugin" ) ;
const path = require ( "path" ) ; module. exports = { entry : './src/index.js' , mode : 'development' , output : { publicPath : 'auto' , } , plugins : [ new ModuleFederation Plugin ( { 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' ) ) ;