go语言嵌入静态文件打包总结
go语言给我提供了一个很好的方式 可以让静态文件直接打包进exe
先说下大概情况 我的项目是前后分离的 前端是vue写的 后端golang写的。 我想要最终的实现效果就是把静态文件也嵌入到golang打包的exe里面
开发环境
本地开发的时候 我启动的golang和前端dev的服务器 不是一个端口 这个会出现跨域问题。这个问题开启跨域就可以解决
export const config = { // API 基础路径 // 开发环境 (Dev) 必须设置为 '/api',这样请求才会以 /api 开头(例如 /api/ms-imap), // 从而匹配 vite.config.js 中的 proxy: { '/api': ... } 规则。 // 如果设置为 '/',请求就是 /ms-imap,不匹配 '/api' 前缀,所以不会走代理。 API_BASE_URL: import.meta.env.DEV ? '/' : `/` };
我这么把请求的基础url 设置 / 这样的话 请求接口的比如 api/test 他还是用的前端的域名 这个时候访问肯定会失败的 所以这个时候我用了前端代理proxy功能
export default defineConfig({ plugins: [vue()], server: { proxy: { '/api': { target: 'http://127.0.0.1:5566', changeOrigin: true, // rewrite: (path) => path.replace(/^\/api/, ''), } } } })
这样的化 请求中包含api的时候 会自动 代理到5566端口 这样的化 就能成功访问到后台的接口了。而且开发体验和打包体验很一致
现在就可以打包前端代码了 而且没有任何依赖~ 不需要写死后端接口的域名~当然我这个有个前提 是为了把前端代码嵌入到go打包的exe 所以前后端域名肯定是一个的
<script type="module" crossorigin src="/assets/index-8fbe0nLu.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CT8d6YAU.css">
这个因为是要丢到go里面 所以这个路径要改成适合go的路径~
//后端部分基本不太需要改什么 后端直接打包就可以上线了
//线上需要一个域名 nginx服务器 如果需要go一直跑 可以搞一个pm2 进程管理 。。nginx反响代理到程序端口 这样基本就完事了.
//后续补充
那个路径也问题也解决了,vite 里面有个配置 只要设置base的路径就可以了

浙公网安备 33010602011771号