微前端:quankun

零: 前言

typescript 复制代码
微前端可以将大应用拆分功能独立的微应用,可独立开发部署,
每个微应用可以采用自己的技术栈,这样更好维护和拓展。

微前端也会存在跨域 权限控制 数据共享 性能(页面加载时间) 安全 
多团队协作(一个团队负责一个页面或模块) 组件重用。要采用适合的方案

一: 创建项目

主项目

typescript 复制代码
yarn create vite main-app --template react-ts

micro-react01项目

typescript 复制代码
npx create-react-app micro-react01 --template typescript

micro-vue01项目

typescript 复制代码
yarn create vite micro-vue01 --template vue-ts

二: 主项目操作

typescript 复制代码
npm i quankun -S

在主项目app.tsx加入下面的代码

typescript 复制代码
import { registerMicroApps, start } from 'qiankun';

registerMicroApps([
  {
    name: 'reactapp', // app name registered
    entry: '//localhost:3001',
    container: '#yourContainer1',
    activeRule: '/app1',
  },
  {
    name: 'vueapp',
    entry: '//localhost:5175',
    container: '#yourContainer2',
    activeRule: '/app2',
  },
]);

start();

import { loadMicroApp } from 'qiankun';

// loadMicroApp({
//   name: 'reactapp',
//   entry: '//localhost:3001',
//   container: '#yourContainer1',
// });

帮加上插槽地址

typescript 复制代码
<div id='yourContainer1'></div>
        <div id='yourContainer2'></div>

最终如下

app.tsx

typescript 复制代码
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import { registerMicroApps, start } from 'qiankun';

registerMicroApps([
  {
    name: 'reactapp', // app name registered
    entry: '//localhost:3001',
    container: '#yourContainer1',
    activeRule: '/app1',
  },
  {
    name: 'vueapp',
    entry: '//localhost:5175',
    container: '#yourContainer2',
    activeRule: '/app2',
  },
]);

start();

import { loadMicroApp } from 'qiankun';

// loadMicroApp({
//   name: 'reactapp',
//   entry: '//localhost:3001',
//   container: '#yourContainer1',
// });

function App() {
  const [count, setCount] = useState(0)

  return (
    <>
      <div>
        mainapp
        <div id='yourContainer1'></div>
        <div id='yourContainer2'></div>
      </div>
    </>
  )
}

export default App

三: 微项目操作

micro-react01项目

typescript 复制代码
在package.json中加入
  "devServer": {
    "headers": {
      "Access-Control-Allow-Origin": "*",
      "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE",
      "Access-Control-Allow-Headers": "*"
    }
  }
  执行npm run build打包

然后启动服务

typescript 复制代码
npm i serve -g
serve

得到服务地址localhost:3001

四: 访问微应用

访问: 主项目地址/app1,

此时,发现micro-react01应用已经加载出来了

相关推荐
kyriewen9 小时前
面试官让我用 AI 重构一个 8 年陈的 React 组件——他说他不看代码,只看我会不会拆
前端·javascript·面试
计算机魔术师9 小时前
700吉瓦「幽灵用电」:美国AI数据中心的抢电闹剧正在失控
前端
IT_陈寒9 小时前
JavaScript数组排序踩的坑,差点让我加班到凌晨
前端·人工智能·后端
风骏时光牛马9 小时前
提示词工程:大模型交互的核心构建艺术
前端
今日无bug10 小时前
大模型的回答是怎么一个字一个字蹦出来的?前端流式输出解析
前端·llm·agent
计算机魔术师10 小时前
Anthropic 复盘 Claude 模型越权访问真实系统事件并改进对齐与安全措施
前端
掘金者阿豪10 小时前
Seedance 2.0/2.5 虚拟素材能跨 Key 共用吗?一次讲清 Asset ID、账号隔离与 SaaS 素材架构
前端·后端
用户500937683903910 小时前
热敏小票 Web 打印:我在 58/80mm 上折腾的两周
前端·vue.js
XGM10 小时前
一个前端新手的"顿悟"时刻:DOM树、渲染原理和JS动态渲染
前端
东方小月10 小时前
一篇文章带你深入拆解Skill的本质与工程实现,让你不再滥用Skill
前端·人工智能·后端