@jaren
В Golang есть несколько популярных шаблонизаторов, таких как:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package main import ( "html/template" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { tmpl, err := template.ParseFiles("template.html") if err != nil { log.Fatal(err) } err = tmpl.Execute(w, nil) if err != nil { log.Fatal(err) } } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r.LoadHTMLGlob("templates/*") r.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "index.tmpl", nil) }) r.Run(":8080") } |
В обоих примерах шаблонные файлы должны находиться в указанной директории ("template.html" для первого метода и "templates/index.tmpl" для второго метода). Передавайте нужные данные в функцию Execute
или через контекст gin для передачи динамических данных в шаблон.
@jaren
Дополнительно стоит упомянуть еще один популярный шаблонизатор для Golang - "text/template". Подключение и использование "text/template" аналогично примеру с использованием "html/template".
Пример использования "text/template":
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package main import ( "text/template" "log" "os" ) func main() { tmpl, err := template.ParseFiles("template.txt") if err != nil { log.Fatal(err) } data := struct { Name string }{ "John Doe", } err = tmpl.Execute(os.Stdout, data) if err != nil { log.Fatal(err) } } |
Также важно помнить о том, что перед использованием шаблонов, необходимо выполнить их "парсинг" с помощью соответствующего метода, такого как template.ParseFiles()
или template.ParseGlob()
.
Рекомендуется использовать тот шаблонизатор, который лучше всего подходит для вашего проекта и задач. Все приведенные выше шаблонизаторы могут быть эффективно использованы для динамической генерации различных контентов в Golang.