微前端解决方案初探 04 模块联邦(共享模块、手动挂载应用)

本文探讨了在微应用中如何通过模块联邦共享faker等库,避免重复加载,解决版本冲突,并实现微应用挂载的灵活性。作者介绍了配置共享模块的方法,以及如何在容器应用中管理和调用共享组件,以提高开发效率和资源优化。

共享模块

当前存在的问题

当前在 products 和 cart 微应用中都使用了 faker,当 container 加载这两个应用模块后,faker 被加载了两次:

在这里插入图片描述

通过模块联邦的共享模块可以实现相同模块只需加载一次。

实现共享模块

使用模块联邦共享模块,只需要在插件配置中添加 shared 配置项即可。

修改 products 和 cart 应用的 webpack 插件配置:

new ModuleFederationPlugin({
   
   
  filename: 'remoteEntry.js',
  name: 'cart',
  exposes: {
   
   
    './index': './src/index'
  },
  // 共享模块
  shared: ['faker']
})

注意:共享模块需要异步加载,以本文为例,使用 faker 的代码要放到 importthen 的回调函数中,即:

import('faker').then(m => {
   
   
    const faker = m.default
    // 之后才能使用 faker
})

同加载远程应用模块一样,为了避免嵌套一层回调函数,可以在微应用中添加 bootstrap.js 文件,在文件中同步加载 faker,在入口文件中异步加载 bootstrap.js

修改 products 应用:

// products\src\bootstrap.js
import faker from 'faker'

let products = ''

for (let i = 0; i <= 5; i++) {
   
   
  // 随机生成产品名称
  products += `<div>${
     
     faker.commerce.productName()}</div>`
}

document.querySelector('#dev-products').innerHTML = products

// products\src\index.js
import('./bootstrap')

// 导出一个方法
export default function sayHello(name) 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值