项目简介 hel-micro-node 是 hel+下面的一个子模块,专注于提供node端模块联邦解决方案,相比竞品 @module-federation/node,提供更多独有特性,接入更简单,使用更方便 维度/方案 Hel+(hel-micro-node) @module-federation/node 版本化 ✅基于hel-meta.json ✅基于Manifest 更新文件头静态导入模块 ✅允许免启动服务更新 并搭配复杂的配置文件构建你的node应用 双模驱动 ✅即是npm传统模块也是微模块 ❌只能作为远程模块身份使用 上手简易度 简单快捷,仅需引入sdk 较难,需对构建工具层改造 功能特性 ● 免构建: 无需像@module-federation
总体上的源代码来自于模块联邦的示例代码(https://github.com/module-federation/module-federation-examples/tree/master/vue3- 如果想查看更多关于联邦模块的案例,可以访问官方仓库(https://github.com/module-federation/module-federation-examples)。 可以通过 webpack 配置来区分,可以参考例子(https://github.com/module-federation/module-federation-examples/tree/master 参考文章 webpack 5 官方文档(https://webpack.docschina.org/concepts/module-federation/) Webpack5 跨应用代码共享 - Module
module-federation/module-federation-examplesExamples (https://github.com/module-federation/module-federation-examples ) module-federation/next-webpack-5 (https://github.com/module-federation/next-webpack-5 ScriptedAlchemy
( Component / Module-Federation / UMD / Svg / Png 等静态资源). 演示 在线体验地址[5]react.lazy 正常拆包并加载效果.gif route-resource-preload 拆包并预加载效果.gif 正常懒加载(react.lazy)普通组件 及 Module-Federation WX20230424-113712.png route-resource-preload 预加载普通组件 及 Module-Federation WX20230424-113747.png 加载耗时如下 : 资源 正常懒加载 - react.lazy (ms) 预加载 (ms) 普通组件 (单个资源文件) 184 1 Module-Federation 组件 (6 个资源文件) 405 8 从表中可以看出
而不是cv操作,或者把这个组件搞个独立npm仓库(这也是一种比较可靠的方案) 举个栗子 新建一个目录module-federation,然后新建一个packages目录,对应的目录结构如下 |---packages package.json wsrun 我们在application-a与application-b中新建一个package.json,我们使用一个工具wsrun,可以批量启动或者打包多个应用 { "name": "module-federation 写了一个例子,进一步理解MDF 本文示例code example[7] 参考资料 [1]module Federation: https://webpack.docschina.org/concepts/module-federation how-to-use-webpack-module-federation-in-react-70455086b2b0 [4]module-federation-examples: https://github.com/module-federation
而公司内部正在推行的EMP微前端解决方案可以很方便的解决组件扩展问题,其原理是利用webpack5的module-federation特性来做到各应用的组件共享 最终平台呈现效果: 页面创建流程 运营人员创建空白页面 Base', chs: [], extend: { }, pid: 'App', }, ], } 复制代码 获取远程应用对外共享的组件与组件异步渲染 借助webpack5的module-federation , img: 'https://xxx/615fb3a8d4e653419f09b253', catagary: ['基础'], name: ['头图组件'], } 复制代码 加载module-federation
Webpack Module Federation 在 React.js 中的实践[4] 参考资料 [1]Module Federation Examples: https://github.com/module-federation /juejin.cn/post/6938975818659921957 [3]官网 Module Federation: https://webpack.docschina.org/concepts/module-federation
https://github.com/module-federation/module-federation-examplesgithub.com https://github.com/module-federation
Module Federation 基于 webpack 的远程容器特性,详见:https://www.webpackjs.com/concepts/module-federation/#dynamic-remote-containersModuleFederation 谈谈它的实现原理 https://zhuanlan.zhihu.com/p/591621582关于module Federation的思考 https://geocld.github.io/2021/09/15/module-federation
practical-ways-to-share-code/ https://zhuanlan.zhihu.com/p/220138948 https://webpack.js.org/concepts/module-federation
开发启动:30秒 → 2秒 热更新:1秒 → 0.1秒 配置复杂度:大幅降低 案例3:微前端架构优化 // 主应用配置 const ModuleFederationPlugin = require('@module-federation
原文在这里:module-federation, 并且给出了stackblitz 在线运行链接 这个是一个基于 lerna 的 monorepo 仓库, app1 和 app2 是并行启动的, 分别运行在
项目链接 :https://webpack.js.org/concepts/module-federation/ 简而言之,Module Federation 允许 JavaScript 应用程序在运行时从另一个应用程序动态导入代码
项目链接 https://webpack.js.org/concepts/module-federation/ 简而言之,Module Federation 允许 JavaScript 应用程序在运行时从另一个应用程序动态导入代码
项目链接 https://webpack.js.org/concepts/module-federation/ 简而言之,Module Federation 允许 JavaScript 应用程序在运行时从另一个应用程序动态导入代码
loadcomponentname-string-options-loadcomponentoptions--component [2] Webpack官网: https://webpack.js.org/concepts/module-federation / [3] demo: https://github.com/module-federation/module-federation-examples/tree/master/basic-host-remote
未来发展趋势与技术展望 7.1 Webpack 5 的新特性 // Webpack 5 的模块联邦与Tree Shaking结合 const ModuleFederationPlugin = require('@module-federation
// ✅ Webpack Module Federation 2.0 // ️ 宿主应用配置 const ModuleFederationPlugin = require('@module-federation
hel-micro,模块联邦sdk化,免构建、热更新、工具链无关的微模块方案 ,欢迎关注与了解
更多可参考 Webpack 提供的单独指南 module-federation,也可看看下面的社区实践。