Vue+GIN前后端分离项目打包成二进制
问题
使用GIN自带静态资源服务器需要设置一个子目录,而这对于Vue项目来说显然是不合理的,如果使用根目录则会和其他路由冲突,所以需要对静态资源针对性处理
原理
使用Gin的中间件实现过滤API请求,statik用来打包Vue项目资源
解决方案
将api相关路由统一设置在/api
下
这里直接给出中间件的代码
func ProcessStaticFiles(c *gin.Context) {
path := c.Request.URL.Path
// API 跳过
if strings.HasPrefix(path, "/api") {
c.Next()
return
}
statikFS, err := fs.New()
if err != nil {
log.Fatal(err)
}
//此处处理静态资源
fileServer := http.FileServer(statikFS)
fileServer.ServeHTTP(c.Writer, c.Request)
//处理完静态资源,调用c.Abort()中断请求
c.Abort()
}
这样在实现能够直接访问到Vue项目的同时不影响后端API的路由