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
posted @ 2024-04-08 14:56  汉克书  阅读(150)  评论(0编辑  收藏  举报