qinakun实现公共依赖的加载

qinakun实现公共依赖的加载

若是主应用和子应用都使用了相同的库或者包(antd,aixos),就可以用externals的方式引入,减少加载重复包导致的资源浪费。

方式:
1:主应用:将所有公共依赖配置webpack的externals的方式,并且在index.html使用外链引入这些公共依赖
2;子应用:和主应用一样配置webpack的externals。并且在index.html使用外链引入这些公共依赖。
注意点:还需要给子应用的公共依赖加上 ignore 属性(这是自定义的属性,非标准属性),qiankun在解析时发现ignore属性会自动直接忽略

子应用之中使用axios

  • axios的安装: cnpm i axios

umi子应用 加载外部js链接 .umirc.ts

import { defineConfig } from 'umi';

export default defineConfig({
  base: '/sub-umi',
  npmClient: 'npm',
  plugins: ['@umijs/plugins/dist/qiankun'],
  qiankun: {
    slave: {},
  },
  // 子应用 headScripts作用:配置在HTML文档的head标签中引入的外部脚本文件
  headScripts: [
    { src: 'https://unpkg.com/axios@1.1.2/dist/axios.min.js', ignore: true },
  ],
  routes: [
    { path: '/', component: '@/pages/index' },
    { path: '/detail', component: '@/pages/detail' },
  ],
});

使用axios

import axios from 'axios';
import { useEffect } from 'react'

export default function List() {
  useEffect(() => {
    axios.get('/list').then(res => {
      console.log(res);
    })
  }, [])
  return (
    <div>
      列表页内容
    </div>
  );
}

基座的配置

  • 安装依赖:cnpm i react-app-rewired customize-cra

config-overrides.js (src同级)

  • 通过 externals的方式引入子应用的axios
// 修改config-overrides.js
const { override, addWebpackExternals } = require('customize-cra')

module.exports = override(
  addWebpackExternals ({
    axios: "axios",
  }),
)

基座 public / index.html之中配置与子应用加载axios同一个版本的js链接

<script src="https://unpkg.com/axios@1.1.2/dist/axios.min.js"></script>

基座 package.json 修改运行脚本

  "scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "test": "react-app-rewired test",
    "eject": "react-app-rewired eject"
  },

相关推荐

  1. qinakun实现公共依赖

    2024-03-25 03:06:03       50 阅读
  2. qiankun按需微应用方案

    2024-03-25 03:06:03       32 阅读
  3. 【Vue】图片懒实现

    2024-03-25 03:06:03       29 阅读
  4. 【React】使用 antd 组件实现 iframe 效果

    2024-03-25 03:06:03       26 阅读
  5. qiankun子应用vuejs资源失效问题解决

    2024-03-25 03:06:03       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 03:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 03:06:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 03:06:03       82 阅读
  4. Python语言-面向对象

    2024-03-25 03:06:03       91 阅读

热门阅读

  1. Git tag总结

    2024-03-25 03:06:03       39 阅读
  2. vscode集成git管理项目

    2024-03-25 03:06:03       36 阅读
  3. PiflowX-Faker组件

    2024-03-25 03:06:03       46 阅读
  4. bind更改this指向问题

    2024-03-25 03:06:03       44 阅读
  5. 三维重建-单目相机标定

    2024-03-25 03:06:03       37 阅读
  6. c语言如何颠倒字符串顺序

    2024-03-25 03:06:03       35 阅读
  7. 网络安全工程师学习路线汇总

    2024-03-25 03:06:03       43 阅读
  8. 安卓面试题多线程 131-135

    2024-03-25 03:06:03       37 阅读
  9. 关于利率,你需要知道的那些事

    2024-03-25 03:06:03       47 阅读
  10. platform devices创建实例

    2024-03-25 03:06:03       34 阅读