Как парсить «Go» «text/template» и «html/template»? - коротко
Для парсинга шаблонов в Go используются пакеты text/template
и html/template
. Эти пакеты предоставляют функции для создания и обработки шаблонов, которые могут быть использованы для генерации текста и HTML-кода соответственно. Для парсинга шаблона необходимо создать экземпляр шаблона, используя функцию template.New
, после чего можно использовать метод Parse
для загрузки и парсинга шаблона из строки или файла.
Как парсить «Go» «text/template» и «html/template»? - развернуто
Парсинг шаблонов в языке программирования Go осуществляется с использованием пакетов «text/template» и «html/template». Эти пакеты предоставляют мощные инструменты для работы с шаблонами, которые могут быть использованы для генерации текста или HTML-кода.
Пакет «text/template» предназначен для работы с текстовыми шаблонами, которые могут содержать произвольный текст. Он позволяет вставлять переменные и выполнять логические операции внутри шаблона. Основные функции пакета включают:
- Создание шаблона с помощью функции
New
. - Парсинг шаблона с помощью функции
Parse
. - Выполнение шаблона с помощью функции
Execute
.
Пример использования пакета «text/template»:
package main
import (
"os"
"text/template"
)
func main() {
// Создание нового шаблона
tmpl := template.New("example")
// Парсинг шаблона из строки
tmpl, err := tmpl.Parse("Hello, {{.Name}}!")
if err != nil {
panic(err)
}
// Создание данных для шаблона
data := struct {
Name string
}{
Name: "World",
}
// Выполнение шаблона и вывод результата в стандартный вывод
err = tmpl.Execute(os.Stdout, data)
if err != nil {
panic(err)
}
}
Пакет «html/template» предназначен для работы с HTML-шаблонами. Он предоставляет те же функции, что и «text/template», но также обеспечивает безопасность при вставке данных в HTML, экранируя специальные символы, чтобы предотвратить XSS-атаки. Основные функции пакета включают:
- Создание шаблона с помощью функции
New
. - Парсинг шаблона с помощью функции
Parse
. - Выполнение шаблона с помощью функции
Execute
.
Пример использования пакета «html/template»:
package main
import (
"html/template"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
// Создание нового шаблона
tmpl := template.Must(template.New("example").Parse(`
Hello, {{.Name}}!
`))
// Создание данных для шаблона
data := struct {
Name string
}{
Name: "World",
}
// Выполнение шаблона и вывод результата в HTTP-ответ
err := tmpl.Execute(w, data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Оба пакета предоставляют возможность работы с вложенными шаблонами и шаблонами, которые могут быть включены в другие шаблоны. Это позволяет создавать сложные и гибкие шаблоны, которые могут быть легко изменены и поддерживаемы.