qiankun子应用静态资源404问题的一种有效解决方法(遇到了http请求静态文件404、css文件引用图片无法显示、svg图片转换成 base64无法显示等问题)

在👉🏻 qiankun微前端部署👈🏻这个部署方式的前提下,遇到的问题并解决问题的过程

2024.07.02 添加 Vue3.0的写法

>> 问题现象

  1. 通过http请求本地的静态json文件404
    在这里插入图片描述
  2. css中部分引入的图片无法显示
    在这里插入图片描述

>> 最开始的解决方式

在👉🏻 qiankun微前端部署👈🏻这个部署方式的前提下,指望用 nginx配置图片路径转发直接找到子应用的静态资源路径

在这里插入图片描述

>> 最开始的解决结果

首次打开页面(清空缓存再进入页面)图片还是可能会找不到,刷新几次页面才会正常显示。
(猜测是不是多刷新几次页面有了缓存还是怎么的才使得 nginx的转发生效了)

>> 再观察问题

<img>标签引用的图片、vue组件中 background引用的图片没有问题,有问题的是独立的 css文件中 background引用的图片

>> 再尝试

使用url-loader将图片文件转换成 base64

>> 又出现问题

svg格式的图片转换成 base64后无法正常显示,百度不到类似的问题,不知道怎么办

>> 重新各种关键字不停地百度

搜到一篇文章⭐️ 关于qiankun微服务css文件中ElementUI字体引用路径的解决方法

>> 最终的解决方式

  1. 通过http请求本地的静态json文件问题
    在请求url前面加上process.env.BASE_URL

  2. css文件中引入的图片找不到的问题
    main.js文件中引入的 css文件转移到App.vue中,再将main.js中引入App.vue的方式改为异步加载

Vue2.0的写法如下

	const App = resolve => require(['./App'], resolve)

在这里插入图片描述 在这里插入图片描述
Vue3.0的写法如下

	import { createApp, defineAsyncComponent } from 'vue'
	
	const App = defineAsyncComponent({
	  loader: () => import('./App.vue')
	})

在这里插入图片描述 在这里插入图片描述

### 如何配置 Nginx 部署 Vue2 和 Qiankun 微前端项目 #### 使用 Nginx 进行微前端应用部署 对于基于 Vue2 构建并集成 Qiankun 实现的微前端架构的应用程序,在将其部署到生产环境时,通常会利用 Nginx 来处理静态资源分发以及反向代理请求。为了使这些应用程序能够正常工作,特别是在采用 `history` 路由模式的情况下,需要正确设置 Nginx 的配置文件。 #### 修改 Nginx 配置支持 History Mode 当使用 Vue Router 的 history 模式时,所有的 URL 请求都应被重定向至 index.html 文件,除非它们指向实际存在的静态资源(如图片CSS 或 JavaScript)。这可以通过调整 Nginx 中 location 块内的 try_files 指令来实现: ```nginx server { listen 80; server_name localhost; root /path/to/vue-app/dist; location / { try_files $uri $uri/ /index.html; } # 对于 microApp 开头的子应用路径特别处理 location ~ ^/microApp- { proxy_pass http://backend_server_address; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 上述配置确保了即使用户直接访问某个特定页面地址也不会因为找不到对应文件而报错,而是返回单页应用入口 HTML 文档让其接管后续路由解析[^1]。 #### 整合 Qiankun 插件完成多框架协作 为了让多个独立开发的小型 SPA (Single Page Application) 可以无缝嵌入同一个主站之中形成统一界面体验,可以借助 qiankun 提供的能力来进行加载其他 vue 模块作为远程组件的方式加入进来。安装依赖之后创建相应的注册表用于声明哪些位置会被替换成来自不同源的服务端渲染结果或者纯客户端脚本引入形式的内容[^2]。 通过以上方法即可实现在 nginx 上成功托管包含有 qiankun 支持特性的 vue2 应用实例,并且保持良好的用户体验不受影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值