代码拉取完成,页面将自动刷新
package Route
import (
"bytes"
"embed"
"html/template"
"net/http"
"path"
"sync"
)
type tempView struct {
//assetFs *embed.FS
templateDir string //模板存放目录
templateSuffix string //模板后缀
}
var tempViewOnce sync.Once
var tempViewInstance *tempView
/**
@param templateDir string 模板存放目录
@param templateSuffix string 模板后缀 如".html"
*/
func newTempView(templateDir, templateSuffix string) *tempView {
tempViewOnce.Do(func() {
tempViewInstance = &tempView{
templateDir: templateDir,
templateSuffix: templateSuffix,
}
})
//tempViewInstance = &tempView{
// templateDir: templateDir,
// templateSuffix: templateSuffix,
//}
return tempViewInstance
}
func (tv *tempView) Render(engine *Engine, assetFs *embed.FS, write http.ResponseWriter, data interface{}, tempName string) {
var itemTempBuffer bytes.Buffer
itemTempBuffer.WriteString(tv.templateDir)
itemTempBuffer.WriteString(getPathSeparator())
itemTempBuffer.WriteString(tempName)
itemTempBuffer.WriteString(tv.templateSuffix)
itemTemp := itemTempBuffer.String()
itemTempBuffer.Reset()
_, fileName := path.Split(itemTemp)
engine.log.Debug("template path:%s", itemTemp)
t, errd := template.ParseFS(assetFs, itemTemp)
if errd != nil {
_, _ = write.Write([]byte(errd.Error()))
} else {
err := t.ExecuteTemplate(write, fileName, data)
if err != nil {
_, _ = write.Write([]byte(err.Error()))
}
}
}
/**
批量模板解析
*/
func (tv *tempView) RenderMultiple(engine *Engine, asset *embed.FS, write http.ResponseWriter, data interface{}, tempName []string) {
var tempPath []string
if tempName == nil || len(tempName) == 0 {
_, _ = write.Write([]byte("no template load"))
return
}
for _, v := range tempName {
var itemTempBuffer bytes.Buffer
itemTempBuffer.WriteString(tv.templateDir)
itemTempBuffer.WriteString(getPathSeparator())
itemTempBuffer.WriteString(v)
itemTempBuffer.WriteString(tv.templateSuffix)
itemTemp := itemTempBuffer.String()
itemTempBuffer.Reset()
tempPath = append(tempPath, itemTemp)
}
engine.log.Debug("templateMultiple path:%+v", tempPath)
t, errd := template.ParseFS(asset, tempPath...)
if errd != nil {
_, _ = write.Write([]byte(errd.Error()))
} else {
err := t.Execute(write, data)
if err != nil {
_, _ = write.Write([]byte(err.Error()))
}
}
}
/**
获取目录分隔
*/
func getPathSeparator() string {
return "/"
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。