当前位置: 首页 > news >正文

使用 vite-plugin-dynamic-base 实现运行时动态设置上下文路径

我们一般会在编译之前设置上下文,那么如何在编译之后动态设置上下文的路径?

本文使用的技术栈是 Go(Gin) + Vue.js(Vite)

本文使用到的第三方包:https://github.com/chenxch/vite-plugin-dynamic-base

配置 vite.config.ts

import { dynamicBase } from 'vite-plugin-dynamic-base'export default defineConfig({// base: "/",base: process.env.NODE_ENV === "production" ? "/__dynamic_base__/" : "/",plugins: [dynamicBase({ /* options */ }),],
})

后端动态返回 index.html 的内容,比如我后端使用 golang 实现

在返回内容前,对内容进行了处理,替换 __dynamic_base__ 为动态上下文,并且将 window.__dynamic_base__ 设置为动态上下文

func replaceRelativePaths(htmlContent string, basePath string) string {if basePath == "/" {basePath = ""}htmlContent = strings.ReplaceAll(htmlContent, "/__dynamic_base__/", basePath+"/")injection := fmt.Sprintf(`<script>window.__dynamic_base__ = "%s";</script>`, basePath)return strings.Replace(htmlContent, "</head>", injection+"</head>", 1)
}

最终效果如下(这里设置的上下文是 /abc):

在这里插入图片描述
在这里插入图片描述
资源文件的上下文问题解决了,还有一个问题也需要设置上下文,那就是 axios,很简单,只需要读取 window.__dynamic_base__ 就可以了。

const dynamicBase = (window as any).__dynamic_base__ || "";
// 创建 axios 实例
const service = axios.create({baseURL: `${dynamicBase}${import.meta.env.VITE_APP_BASE_API}`,timeout: 50000,headers: { "Content-Type": "application/json;charset=utf-8" },
});

这样我们就实现了,真正意义上的动态设置项目全局上下文

相关文章:

  • Gradle学习笔记
  • 内存分页法
  • Windows实时拓展架构-鸿道Intewell-win构型
  • Windows Ubuntu 目录映射关系
  • 在Windows系统中使用C++与Orthanc交互:基于DICOMweb的医学影像应用开发
  • Cribl 中 Parser 扮演着重要的角色 + 例子
  • 【Auto-dl ssh隧道,TensorBoard】
  • FreeRTOS学习笔记【11】-----任务列表
  • 打卡day31
  • 计算机网络基础概念
  • Gas优化利器:Merkle 树如何助力链上数据效率革命
  • ubuntu下docker安装mongodb-支持单副本集
  • 磁盘空间不足,迁移Docker 数据目录
  • 基于自然语言转SQL的BI准确率如何?
  • 《算法笔记》11.8小节——动态规划专题->总结 问题 D: Coincidence
  • linux下jenkins部署安装使用
  • 【图像大模型】Stable Video Diffusion:基于时空扩散模型的视频生成技术深度解析
  • 【HTML-2】HTML 标题标签:构建网页结构的基础
  • 设计模式之备忘录模式
  • 如何使用通义灵码玩转Python - AI编程助手提升效率
  • 外交部副部长马朝旭会见美国新任驻华大使庞德伟
  • 陕西籍青年作家卜文哲爬山时发生意外离世,终年28岁
  • 复旦建校120周年|迎来复旦大学艺术馆开馆
  • 年内首次存款利率下调启动:3年期、5年期均下调0.25个百分点
  • 纽约市长称墨西哥海军帆船撞桥事故已致2人死亡
  • 雅安市纪委监委回应黄杨钿甜耳环事件:相关政府部门正在处理