Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

  • 工程能力

    • 工程效率

    • 编译构建

      • AST解析
      • Bun使用总结
      • ESBuild使用总结
      • Rollup使用总结
      • SWC使用总结
      • Vite使用总结
      • 前端热更新原理剖析
      • babel

      • webpack

        • Webpack之TreeShaking
        • Webpack之libraryExport
        • sideEffect和treeShake
        • 关于模块联邦的理解
          • 新瓶装旧酒:模块联邦不是黑科技【WIP】
          • 思想上是一个创新【WIP】
          • 存在的问题【WIP】
          • 继续学习
          • 拓展阅读
        • 常用插件
        • 笔记
    • 工程管理

    • JS 模块化

    • CSS 模块化

    • 工程质量

    • 前端测试

    • CI&CD

  • 应用基础

  • 专业领域

  • 业务场景

  • 大前端
  • 工程能力
  • 编译构建
  • webpack
gahing
2023-07-09
目录

关于模块联邦的理解草稿

模块联邦(Module Federation)是 Webpack5 的一个新功能,支持将当前项目的部分模块或 lib 单独导出并打包得到远程构建产物,其他项目可以从指定的远程构建产物中导入模块。

关注的几个问题:

  1. 导出模块,是否会导致模块代码加载?
  2. 远程加载,如何保证模块版本的正确性和稳定性?

# 新瓶装旧酒:模块联邦不是黑科技【WIP】

模块联邦是一个内置的 Webpack 插件,

要想将项目的模块共享给其他模块,我们需要调整打包流程。

需要哪些信息?模块入口和模块名是要的,这样才能得到一份独立的构建产物。

// 导出方配置
const { ModuleFederationPlugin } = require('webpack').container;

new ModuleFederationPlugin({
    name: 'aaa_app',
    filename: 'aaaEntry.js',
    exposes: {
      './Button': './src/Button.jsx',
    }
})


// 引入方配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14

publicPath 也是要配的,entry 文件中寻找依赖,默认用的是 / ,在其他项目就找不到了。

一旦独立构建了,那这个模块依赖的其他模块会被一起打包进去么?想想也知道肯定会,不然其他项目使用该模块的时候就缺依赖了。

那这样不是会导致重复代码加载?

# 思想上是一个创新【WIP】

# 存在的问题【WIP】

  • 无法极致打包?
  • 多版本和缓存问题?

# 继续学习

  • 官方文档:https://webpack.docschina.org/concepts/module-federation/
  • 示例仓库:https://github.com/module-federation/module-federation-examples

# 拓展阅读

  • 新手向-为什么说 webpack 的 Module Federation 天生是模块级的微前端? - 神说要有光的文章 - 知乎 (opens new window)
  • 精读《Webpack5 新特性 - 模块联邦》 (opens new window)
  • 模块联邦(Module Federation)知识梳理 (opens new window)
  • hel-micro 模块联邦新革命 (opens new window)
  • 一文通透讲解webpack5 module federation (opens new window)
编辑 (opens new window)
#金石计划
上次更新: 2024/09/01, 23:56:56
sideEffect和treeShake
常用插件

← sideEffect和treeShake 常用插件→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式