webpack5 Module Federation学习杂记
Author:zhoulujun Date:
在独立的应用之间共享代码的可伸缩解决方案从未如此方便,而且几乎不可能大规模实现。此前我们拥有的最成熟方案是 externals 或 DLLPlugin(git submodule、npm包封装除外),它们强制把依赖集中于一个外部文件中。
我们先来看一下 webpack 打包后的一些原理,这个也是后面理解 Module federation 的核心。
什么是 Module Federation
这个概念是由 Webpack5 核心开发者 Zack Jackson 提出的,他当时写了篇 文章 介绍的时候,是这样起的标题:
Webpack 5 Module Federation: A game-changer in JavaScript architecture
以及对其进行了描述
Module federation allows a JavaScript application to dynamically run code from another bundle/build, on client and server.
不仅可以动态地加载代码,同时还可以共享依赖(如果使用 federated module 的应用程序没有federated code 所需的依赖关系,Webpack将从该 federated 构建源下载缺失的依赖关系)。
术语
Module federation: 适用于在浏览器或者 Node.js 中运行的 JavaScript 模块。
host:在页面加载过程中最先被初始化的 webpack 构建;
remote:部分被 “host” 消费的另一个 webpack 构建;
Bidirectional(双向的) hosts:当一个 bundle 或者 webpack build 作为一个 host 或 remote 运行时,它要么消费其他应用,要么被其他应用消费——均发生在运行时(runtime)。
shared: 共享模块是指既可重写的又可作为向嵌套容器提供重写的模块。它们通常指向每个构建中的相同模块,例如相同的库。
参考文章:
探索 webpack5 新特性 Module federation 在腾讯文档的应用 www.alloyteam.com/2020/04/14338
转载本站文章《webpack5 Module Federation学习杂记》,
请注明出处:https://www.zhoulujun.cn/html/tools/Bundler/webpackTheory/9031.html