gopherjs 是把 go 轉換爲 js 的工具,echo 是 go 的 web 框架。git
echo 官網: https://echo.labstack.comgithub
使用 gopherjs serve
在 localhost:8080 開啓服務,而後運行下面的 go 代碼,它使用 echo 框架在 localhost:1323 開啓服務,裏面的邏輯是把非 /api 路徑的請求都反向代理到 gopherjs 在 8080 端口提供的服務,只有路徑爲 /api 的請求,跳過代理,由本身處理。這樣能夠實如今同一個端口(同一個域)下提供 api 接口和 js 等靜態文件,而不須要讓服務器容許 api 接口的跨域訪問。web
package main import ( "net/http" "net/url" "github.com/labstack/echo" "github.com/labstack/echo/middleware" ) func main() { e := echo.New() // middleware e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.Use(middleware.Gzip()) e.GET("/api", func(c echo.Context) error { return c.String(http.StatusOK, "hello world!\n") }) url1, err := url.Parse("http://localhost:8080") if err != nil { e.Logger.Fatal(err) } targets := []*middleware.ProxyTarget{ { URL: url1, }, } proxyMid := middleware.ProxyWithConfig(middleware.ProxyConfig{ Balancer: middleware.NewRandomBalancer(targets), Skipper: func(c echo.Context) bool { if c.Path() == "/api" { return true } return false }, }) e.Use(proxyMid) e.Logger.Fatal(e.Start(":1323")) }