当前位置: 首页 > news >正文

哈尔滨网络公司网站建设网址最全的浏览器

哈尔滨网络公司网站建设,网址最全的浏览器,建设项目公示对网站有什么要求,企业为什么要做账提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、ModuleFederationPlugin参数含义?二、如何在dumi中使用及问题整理1. 如何在dumi中使用(这个配置是好使的)2.相关问题整理2.1 问题12.2 问题2 总…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、ModuleFederationPlugin参数含义?
  • 二、如何在dumi中使用及问题整理
    • 1. 如何在dumi中使用(这个配置是好使的)
    • 2.相关问题整理
      • 2.1 问题1
      • 2.2 问题2
  • 总结


前言

联邦模块(Module Federation)是指一种用于构建微前端架构的技术,它允许不同的独立构建(独立的前端应用或模块)在运行时动态地共享代码和模块。这种模式可以让多个团队独立开发和部署自己的前端应用,同时能够在运行时通过网络加载和共享彼此的模块,实现模块的动态联接和交互。

在微前端架构中,每个独立的前端应用可以被看作是一个自治的模块,这些模块可以通过联邦模块的机制进行集成,形成一个整体的前端应用。联邦模块允许各个模块之间共享依赖、代码和状态,从而实现更好的代码复用、更高的开发效率和更好的团队协作。

Webpack的ModuleFederationPlugin是实现联邦模块的一种工具,它可以让你在构建各个独立的前端应用时,指定哪些模块可以被共享,以及如何在运行时动态加载这些共享模块。这种方式可以使得前端应用的开发和部署更加灵活和高效。

本文我们将介绍一下ModuleFederationPlugin各参数的含义,并且整理一下在dumi中使用ModuleFederationPlugin时遇到的问题及解决方案。


一、ModuleFederationPlugin参数含义?

以下将列举一下常用的字段及其含义

const { ModuleFederationPlugin } = require('webpack').container;
module.exports = {plugins: [new ModuleFederationPlugin({name: 'xxx',  // 模块的名称,用于标识模块的唯一性filename: 'xxxx.js', // 模块的文件名,用于指定模块的输出路径exposes: { // 定义模块中要共享的部分。'./module1': './src/module1.index.tsx', // ./指的是根目录'./module2': './src/module2.index.tsx'},shared: {react: {requiredVersion: '^18.2.0',  // package.json中要求的版本号singleton: true, // 布尔值。此提示只允许共享作用域中有一个共享模块的实例(默认禁用)。一些库使用全局内部状态(例如react,react-dom)。因此,同时只能有一个库的实例运行非常重要。eager: true, // 布尔值。此提示允许Webpack在初始块中直接包含所提供的模块和备用模块,而不是通过异步请求获取库。换句话说,这允许在初始加载时使用共享模块。但请注意,启用此提示将始终下载所有提供的和备用模块。},'react-dom': {requiredVersion: '^18.2.0',singleton: true },}}),],
};

二、如何在dumi中使用及问题整理

1. 如何在dumi中使用(这个配置是好使的)

remote端:

    new ModuleFederationPlugin({name: 'components',filename: 'index.js',exposes: {'./module1': './src/module1.index.tsx','./module2': './src/module2.index.tsx'},shared: {react: { requiredVersion: '^18.2.0', singleton: true },'react-dom': { requiredVersion: '^18.2.0', singleton: true },},}),

host端:

  chainWebpack(memo: any, { webpack }: any) {memo.plugin('ModuleFederationPlugin').use(webpack.container.ModuleFederationPlugin, [{name: 'docs',remotes: {components: 'components@http://172.16.3.19:3001/index.js',},shared: {react: { singleton: true, eager: true },},},]);},

2.相关问题整理

2.1 问题1

问题描述:

error - MFSU dist file: /Users/xxxx/test/doc/node_modules/.cache/mfsu/mf-va_remoteEntry.js not found
error - MFSU latest build error:  AssertionError [ERR_ASSERTION]: dependence not found: xxxx

解决方法:

// 应该是mfsu和联邦模块有冲突,所以关闭
export default defineConfig({mfsu: false,
})

2.2 问题2

问题描述:

# 经测试,此处不光是useMemo会报错,所有的hook均会报错,不使用react hooks是不会报错的
Cannot read properties of null (reading 'useMemo')

因为报错是读不到useMeme, 所以我们尝试共享react。此时,我们发现报错有变化,报错内容如下:
注意:要在host和react同时共享,否则即使执行了下边的插件也不好使

Error: Shared module is not available for eager consumption

这个问题还是比较常见的,包括官方文档也提供有解决方案, 详情见此链接,大意就是需要增加一个bootstrap文件。这个在咱们正常的react项目都比较容易解决,按官方文档来就可以,但是dumi中,我们应该怎么去找入口文件呢?
经过一番查找,我们发现有部分同学借助umi-plugin-mf-bootstrap这个插件解决了这个问题(原文链接)经尝试后发现没有解决,怀疑大概率是入口文件出问题,所以经过多次尝试,通过写了一个本地插件解决了此问题,插件内容如下:
如果想要尝试umi-plugin-mf-bootstrap插件,但umi版本是3.5+,需要在.dumirc.ts手动配置插件,这个配置是在大部分文章中没有提到的。 配置可参考:https://umijs.org/docs/guides/use-plugins

// @ts-nocheck
import { IApi } from '@umijs/types';
import { resolve } from 'path';
import { readFileSync } from 'fs';export default (api: IApi) => {api.onGenerateFiles(() => {const path_tb =api.env === 'production'? './.dumi/tmp-production/testBrowser.ts': './.dumi/tmp/testBrowser.tsx';const TBBuffer = readFileSync(resolve(path_tb));const TBContent = String(TBBuffer);const path_umi =api.env === 'production'? './.dumi/tmp-production/umi.ts': './.dumi/tmp/umi.ts';const umiBuffer = readFileSync(resolve(path_umi));const umiContent = String(umiBuffer);api.writeTmpFile({path: '../bootstrap_tb.tsx',content: TBContent,});api.writeTmpFile({path: '../testBrowser.tsx',content: 'import("./bootstrap_tb")',});api.writeTmpFile({path: '../bootstrap_umi.tsx',content: umiContent,});api.writeTmpFile({path: '../umi.ts',content: 'import("./bootstrap_umi.tsx")',});});
};

插件需要放到这个位置
在这里插入图片描述


总结

在dumi中使用还是有不少小坑的,遇到问题感觉寻求帮助的路径也比较少,希望此篇文章能给正在或者将要使用dumi+联邦模块的朋友们一些帮助吧

http://www.ds6.com.cn/news/26169.html

相关文章:

  • 互联网站的建设维护营销广告联盟有哪些平台
  • 如何看出网站是用wordpress搭建百度引流平台
  • 奥迪网站建设策划书推广普通话手抄报内容大全资料
  • 合肥地区网站制作广州最新疫情最新消息
  • bootstrap 手机网站模板个人怎么做百度竞价
  • 泰安专业网站建设公司湘潭网站设计外包服务
  • 如何建网站赚钱百度认证中心
  • 有没有网站建设的教程厦门人才网手机版
  • pc网站直接转换成移动端的网站网络推广营销网站建设专家
  • 中国对外建设有限公司网站中国万网域名查询
  • 如何做酒网站谷歌关键词搜索
  • 晋中网站建设电话免费建网站软件下载
  • 广州乐地网站建设公司德芙巧克力软文推广
  • 做彩平的网站深圳百度推广客服电话多少
  • 如何做别人的网站网站关键词优化排名外包
  • 设计软件网站推荐上海aso优化公司
  • 做网站建设公司赚钱神马搜索推广
  • 网站上文章字体部分复制怎么做的seo网站排名优化软件
  • 企业网站建设方案ppt东莞搜索seo网站关键词优化
  • wordpress 值班seo关键词优化方法
  • 关于做营销型网站的建议便宜的seo网络营销推广
  • 西安 网站建设百度销售
  • 中国b2b电商平台排名长沙关键词优化新报价
  • 前端网站模板百度手机助手下载免费安装
  • 网站建设开发能力很强的企业美业推广平台
  • 网站开发项目付款方式seo是什么意思啊
  • oracle自带网站开发西安刚刚宣布
  • 个人兼职网站制作网站首页seo关键词布局
  • 手机老是下载一些做任务的网站东莞做网站推广公司
  • wordpress如何安装模板站长工具seo推广秒收录