Я хочу создать приложение, которое будет вызывать логическую функцию и, в зависимости от результата, предоставлять 1 из 2 скомпилированных реагирующих приложений в виде статических сайтов.
Я использую функцию LoadHTMLGlob, рекомендованную gin, и она отлично работает с файлами .tmpl, как в примере в их документах. Однако при выполнении только статического html со статическим каталогом для каждого сайта ничего не получается.
Структура файла:
├── main.go
└── sites
├── new
│ ├── index.html
│ └── static
└── old
├── index.html
└── static
Код перехода:
func main() {
r := gin.Default()
//r.LoadHTMLFiles("sites/old/index.html", "sites/new/index.html") //doesn't complain, but can't load html
r.LoadHTMLGlob("sites/**/*") // complains about /static being a dir on boot
r.GET("/sites/lib", func(c *gin.Context) {
id := c.Query("id")
useNewSite, err := isBetaUser(id)
if err != nil {
c.AbortWithStatusJSON(500, err.Error())
return
}
if useNewSite {
c.HTML(http.StatusOK, "new/index.html", nil)
} else {
c.HTML(http.StatusOK, "old/index.html", nil)
}
})
routerErr := r.Run(":8080")
if routerErr != nil {
panic(routerErr.Error())
}
}
Я ожидаю, что когда isBetaUser возвращается как true, он должен загружать статический контент в разделы sites/new, в противном случае загружать сайты/old.
Однако загрузка глобусов производит: panic: read sites/new/static: is a directory
при запуске паники.
Загрузка html-файлов по отдельности (прокомментировано выше) работает нормально, но когда приходит запрос, он паникует:
html/template: "new/index.html" is undefined
Я также использовал строку с использованием sites/[old||new]/index.html в c.HTML.
LoadHTMLGlob("sites/**/*.html")
. - person Peter   schedule 25.04.2019