qiankun微前端接入笔记

简介:

  本文是对qiankun微服务的简单探索,只是尝试了基于qiankun架构接入最简单的应用场景,并记录了这个过程中遇到的问题,和一些简单的理解。文章有点长,但是并不复杂,放了很多截图。

qiankun官网地址:

  https://qiankun.umijs.org/zh/guide/tutorial

准备工作:

  通过官网了解,qiankun主要分为两部分:(1)负责路由注册,资源加载的主服务(2)所有拆分后的子服务。通过主服务的统一调度,完成对子服务的管理。

所以,主服务是单独的一层,作为所有子服务的统一访问入口,子服务则在主服务后面一层。

  在这里,我们创建两个子服务的demo,通过vue-cli快速创建即可。主服务的话,搭建最简单的webpack构建环境,只在entry文件中写qiankun的api调用逻辑,其他任何内容不加。下面对主服务和子服务做具体介绍。

主服务:

文件目录结构:

目录及内容介绍:

   src:src文件夹里有两个文件,index.js和index.html。index.html就是最简单的html模板文件,webpack基于此文件输入最终的/dist/index.html。index.js中包含了qiankun的主服务所有逻辑,非常简单。

   index.html如图:

 index.js 如图:

 server:server文件夹里只有一个server.pro.js,里面是最简单的基于node的http服务。由于主服务是webpack构建环境,所以本地调试要依赖webpack-dev-server。但是我在调试中发现,主服务其实对静态资源有两部分功能。一个是对.js,.css等静态资源的相应,另外一个是对路由(url)的相应。对静态资源的相应比较好处理,但是对路由的相应却有个特殊的地方。比如url是"/demo1/a",/demo2/b,/pro......这些路由其实对主服务而言,只需要返回index.html就好。因为这些路由其实都是子服务的路由,主服务接收这些路由后,只需要加载主服务自己的index.html文件,执行index.html依赖的js,即可动态加载子服务js资源,然后命中路由,渲染页面即可。对于第二部分功能需求,webpack-dev-server配置起来比较麻烦,所以,我就写了一个简单的http服务用于主服务调试。server.pro.js如下图:

 dist:dist文件夹中存放了webpack构建后的资源,包括index.html和js文件夹,js文件夹下包含了所有构建后的js资源

其他文件夹及文件的内容无需关注,只是为了搭建最简单的webpack环境。

子服务:

  子服务通过vue/cli快速创建了两个项目,分别占用8080端口和8081端口,代码几乎一样,只有演示页面的内容有点差别。安装:npm install -g @vue/cli,创建项目:vue create project-1 && vue create project-2。这里介绍project-1项目:

文件目录结构:

  上面的目录结构基本是vue/cli默认生成的目录结构,只是在此基础上新增了vue.config.js和public-path.js。由于vue/cli默认没集成vue-router,所以先在子服务装了vue-router。

  App.vue文件:最简单的跟组件,只有包含router-view

 HelloWorld.vue:演示页面:

按照官网文档,子服务接入qiankun需要3步操作(基于vue)

第一步:在src项目新增:public-path.js,并在main.js内引入public-path.js。内容如下:

这个配置应该是对子服务中的某些静态资源改成了绝对路径。在调试过程中发现,主服务对子服务的js和css是可以正常转发的,但是对于子服务图片资源(相对路径)的请求,最终指向了主服务的ip。然后添加了public-path.js就解决了这个问题。

第二步:

修改入口main.js文件,添加qiankun的生命周期

 第三步:修改vue.config.js文件

 至此,主服务和子服务的代码及目录结构介绍完毕。本地调试的时候,需要分别启动主服务和两个子服务。主服务通过node server/server.pro.js 启动前需要先执行webpack的build。然后通过http://127.0.0.1:7000/子服务路由  即可访问页面。

posted @   秋叶枫麓  阅读(978)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示