news 2026/8/22 17:56:37

vite-plugin-qiankun 完整指南:三步在 Vite 中搞定 qiankun 微前端子应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vite-plugin-qiankun 完整指南:三步在 Vite 中搞定 qiankun 微前端子应用

vite-plugin-qiankun 完整指南:三步在 Vite 中搞定 qiankun 微前端子应用

【免费下载链接】vite-plugin-qiankun保留vite es特性,快速接入乾坤微前端子应用项目地址: https://gitcode.com/gh_mirrors/vi/vite-plugin-qiankun

想在 Vite 项目里快速接入 qiankun 微前端?vite-plugin-qiankun 正是为此而生——它保留 Vite 的 ESM 特性,让子应用接入只需一步配置。本文带你走通全流程。

为什么单个 Vite 项目直接跑不了乾坤微前端?

先抛个灵魂拷问:你的 Vite 子应用明明能独立跑起来,为什么主应用一加载它就"装死"?

问题出在几个地方:

  • 生命周期对不上。qiankun 需要拿到子应用的 bootstrap / mount / unmount 三个函数,而 Vite 入口是标准 ES module,默认不会把生命周期挂到全局,主应用拿不到;
  • 资源没拆开。子应用的代码和公共库(Vue、React 等)混在一个大包里,多个子应用同页加载时重复下载,白白浪费流量;
  • 开发模式不友好。Vite dev 下脚本是固定路径的 module 标签,没法直接塞进乾坤的加载流程里。

一句话:Vite 微前端场景需要一层"翻译",把标准 Vite 产物翻译成 qiankun 认识的形态。vite-plugin-qiankun 干的就是这件事。

qiankun 接入的三步:安装、配置、导出生命周期

1️⃣ 安装插件

一行命令搞定(建议放在开发依赖里):

npm install @sh-winter/vite-plugin-qiankun --save-dev

2️⃣ vite.config 怎么配

vite.config.ts里注册插件,注意base必须与子应用名保持一致:

import { defineConfig } from 'vite' import qiankun from 'vite-plugin-qiankun' export default defineConfig({ base: '/my-sub-app/', plugins: [ qiankun('my-sub-app') ] })

qiankun()的入参就是子应用名,必须和主应用注册时用的名字完全一致;base决定了子应用资源的访问前缀,两者错一位,资源就会 404。

3️⃣ 子应用入口导出生命周期函数

在子应用入口文件里导出三个 async 函数,插件会自动把它们挂到主应用可感知的位置:

const app = createApp(App) export async function bootstrap() { console.log('子应用已就绪') } export async function mount(props) { app.mount(props.container ? props.container.querySelector('#app') : document.getElementById('app')) } export async function unmount() { app.unmount() }

这样,qiankun 主子应用之间就打通了——主应用负责"喊人",子应用负责"响应"。

核心机制拆解:插件到底替你做了什么

📦 自动化分包:每个子应用住进自己的储物间

插件会把子应用代码自动分割成独立 chunk,按需加载。就像每户人家有独立储物间,你只搬自己那屋的东西,不会把整栋楼打包。

🚀 公共依赖只加载一次:整层楼共用一部电梯

像 Vue、React 这类公共库会被单独打进公共 chunk,首次进入页面时预加载一次,之后的子应用直接复用。相当于全楼共用一部电梯,谁都不用再单独装。

🧱 沙箱隔离:每个隔间里怎么折腾都不影响邻居

插件为每个子应用生成独立沙箱。子应用里随便改全局变量、乱挂样式,都锁在自己的隔间里,同页渲染多个子应用时互不串扰,稳定性由此而来。

机制解决的问题生活化类比
自动化分包子应用代码独立成 chunk,按需加载每户独立储物间
公共依赖 chunk公共库只下载一次,省流量省时间整层楼共用一部电梯
沙箱隔离多子应用同页运行互不干扰每个隔间独立,互不影响

微前端落地:这些坑我们替你踩过了

  • ⚠️base 与子应用名必须严格对应,这是 404 报错的第一大来源;
  • ⚠️ 生命周期函数必须从入口模块导出且为 async,写在组件内部插件是找不到的;
  • 💡 本地联调时给主应用配好代理,子应用 dev 端口固定下来,避免频繁改动主应用配置;
  • 💡 子应用内部尽量别直接改写全局对象——沙箱能兜住大部分情况,但别把隔离当保险去依赖;
  • 💡 保持主、子应用 Vite 版本一致(插件要求 vite >= 2),减少构建行为差异带来的灵异问题。

结语:把生态凑齐,微前端落地才算完整

vite-plugin-qiankun 的价值,是让 Vite 子应用以最小成本变成合格的 qiankun 公民:三步接入、分包与沙箱自动搞定。搭配建议如下:

生态角色一句话点评
Qiankun基于 Single-SPA 的微前端框架,负责主子应用的调度与加载
Vite提供秒级热更的开发体验,是本插件的运行土壤
Vue3组合式 API 让子应用代码更轻,适合快速拆分模块
React与 Vite 配合成熟,React 子应用同样三步接入

按这套组合走下来,微前端落地不再是"大工程",而是可以按子应用粒度持续推进的日常迭代。

【免费下载链接】vite-plugin-qiankun保留vite es特性,快速接入乾坤微前端子应用项目地址: https://gitcode.com/gh_mirrors/vi/vite-plugin-qiankun

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 17:56:03

把 Emby 媒体服务器变成自助工具:自动追剧、一键注册、更新推送

把 Emby 媒体服务器变成自助工具:自动追剧、一键注册、更新推送 【免费下载链接】MisakaF_Emby MisakaF_Emby - 一个开源仓库,提供账号注册机器人、追剧更新自动化等功能,使用Python和Shell语言。 项目地址: https://gitcode.com/gh_mirror…

作者头像 李华
网站建设 2026/8/22 17:55:59

llms.txt:搜索不读,AI助手天天看

2026年,如果你还在为了"提升AI搜索排名"而部署llms.txt,大概率是在做无用功。Google官方已经明确表态:llms.txt不影响搜索排名,也不影响AI Overviews。对5亿次以上LLM爬虫流量的分析更是显示,GPTBot、Claude…

作者头像 李华
网站建设 2026/8/22 17:54:34

分支和循环基础编程题练习2

1.写代码将三个整数数按从大到小输出。例如:输入:2 3 1输出:3 2 1第一种方法:首先输入三个数,然后判断a是不是最大的,如果是,再判断b和c之间谁大;如果不是,则判断b和c谁是最大的&…

作者头像 李华
网站建设 2026/8/22 17:54:33

数学建模论文写作实战指南:从结构搭建到团队协作的完整心法

1. 从“写不出来”到“写得像样”:我的数学建模论文写作心路如果你参加过数学建模竞赛,或者正准备参加,大概率会和我有同样的感受:模型建得七七八八,代码也跑通了,但一到写论文环节,就感觉无从下…

作者头像 李华
网站建设 2026/8/22 17:53:50

Seraphine:免费的英雄联盟战绩查询与自动BP工具,3 步搞定配置

Seraphine:免费的英雄联盟战绩查询与自动BP工具,3 步搞定配置 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine 是一款免费的英雄联盟战绩查询工具,基于拳头官方 L…

作者头像 李华
网站建设 2026/8/22 17:48:36

GTweak开源工具:Windows系统优化与隐私保护一键配置指南

在实际 Windows 系统管理和维护中,我们常常面临一系列琐碎但重要的工作:新系统需要激活、预装软件占用资源需要清理、隐私设置需要加固、系统性能需要调优,甚至界面也需要个性化调整。这些任务分散在系统设置、组策略、注册表、PowerShell 脚…

作者头像 李华