1 Star 2 Fork 0

tym_hmm / go-web-router

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Template.go 2.38 KB
一键复制 编辑 原始数据 按行查看 历史
天蝎儿 提交于 2022-03-04 12:10 . 完成路由处理
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 "/"
}
Go
1
https://gitee.com/tym_hmm/go-web-router.git
git@gitee.com:tym_hmm/go-web-router.git
tym_hmm
go-web-router
go-web-router
v1.2.12

搜索帮助