最近在做一个项目,使用golang做后端,react做前端。

后端用的是百度的golang框架GDP,对路由、数据库等做了封装,web内核目前是基于开源项目Gin实现。

由于react是SPA应用,所以需要用golang进行分流,默认路由到前端的静态目录,/api的请求则由golang处理。

在处理默认路由时,遇到一个坑,默认的/与Gin的有冲突,所以只能使用NoRoute

s.NoRoute(controllers.Static)
s.StaticFile("/manifest.json", "./build/manifest.json")
s.StaticFile("/favicon.ico", "./build/favicon.ico")
s.Static("/static", "./build/static")

NoRoute对应的HandleFunc

func Static(ctx *Context) {
    ctx.File("./build/index.html")
}

这样就能让Gin支持SPA。