golang打包vue的代码
由于vue的渲染和golang的template的渲染有冲突,如果去修改他们使用的渲染操作,虽然也可以解决,但是不友好。
我因为这个浪费了一个早上,后来就去百度谷歌了。 就找到了 https://github.com/gin-contrib/static
利用golang1.16版本之后的embed,真的很牛逼。
下面写一个简单的示例:
# 自己下载npm,百度就有,也可以apt update && apt-get install 下载
npm config set registry https://registry.npm.taobao.org
npm install -g @vue/cli
vue create ui
cd ui
npm run build
cd ..
cat > main.go << EOF
package main
import (
"embed"
"fmt"
"net/http"
"github.com/gin-contrib/static"
"github.com/gin-gonic/gin"
)
//go:embed ui/dist
var data embed.FS
// 上面就会把数据加载到data里面
func main() {
r := gin.Default()
// 把上面加载的数据,加载到gin里面进行打包
r.Use(static.Serve("/", static.EmbedFolder(data, "ui/dist")))
r.GET("/ping", func(c *gin.Context) {
c.String(200, "test")
})
r.NoRoute(func(c *gin.Context) {
fmt.Printf("%s doesn't exists, redirect on /\n", c.Request.URL.Path)
c.Redirect(http.StatusMovedPermanently, "/")
})
// Listen and Server in 0.0.0.0:8080
r.Run(":8080")
if err := r.Run(":8080"); err != nil {
fmt.Println(err)
}
}
EOF
# 运行上面的go代码
go mod init hank
go mod tidy
# go run main.go # 测试一下
go build