mirror of
https://github.com/snowykami/neo-blog.git
synced 2025-09-03 15:56:22 +00:00
32 lines
752 B
Go
32 lines
752 B
Go
package static
|
|
|
|
import (
|
|
"bytes"
|
|
"embed"
|
|
"fmt"
|
|
"html/template"
|
|
)
|
|
|
|
//go:embed assets/*
|
|
var AssetsFS embed.FS
|
|
|
|
// RenderTemplate 从嵌入的文件系统中读取模板并渲染
|
|
func RenderTemplate(name string, data interface{}) (string, error) {
|
|
templatePath := "assets/" + name
|
|
templateContent, err := AssetsFS.ReadFile(templatePath)
|
|
if err != nil {
|
|
return "", fmt.Errorf("读取模板文件失败: %w", err)
|
|
}
|
|
// 解析模板
|
|
tmpl, err := template.New(name).Parse(string(templateContent))
|
|
if err != nil {
|
|
return "", fmt.Errorf("解析模板失败: %w", err)
|
|
}
|
|
// 渲染模板
|
|
var buf bytes.Buffer
|
|
if err := tmpl.Execute(&buf, data); err != nil {
|
|
return "", fmt.Errorf("渲染模板失败: %w", err)
|
|
}
|
|
return buf.String(), nil
|
|
}
|