#пост Шаблоны в Go. Работа с Templ.

Шаблоны позволяют отделить логику приложения от представления. В Go стандартные пакеты text/template и html/template обеспечивают базовую функциональность. Однако, по мере развития приложений, возникают потребности в более мощных и типобезопасных инструментах. Как раз Templ — такой шаблонизатор для Go с поддержкой компонентов, JSX-подобного синтаксиса и статической типизации. Чего нет у других шаблонизаторов или встроенного в Fiber fiber.TemplateEngine

Пример использования стандартных шаблонов В данном примере мы определяем структуру PageData для передачи данных в шаблон и используем метод Execute для рендеринга шаблона с данными. `package main

import ( "html/template" "net/http" )

type PageData struct { Title string Content string }

func handler(w http.ResponseWriter, r *http.Request) { tmpl := template.Must(template.ParseFiles("template.html")) data := PageData{ Title: "Главная страница", Content: "Добро пожаловать на наш сайт!", } tmpl.Execute(w, data) }

func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }

Минусы стандартных шаблонов - Медленный рендерингшаблон парсится и интерпретируется во время выполнения - Строковые ошибкиесли передать не тот тип данных, приложение упадёт уже на этапе рендеринга - Нет компонентовшаблоны сложно переиспользовать и тестировать Templ - отличия - Статическая типизация и безопасность типов — Templ компилирует шаблоны в Go-код, это позволяет обнаруживать ошибки на этапе компиляции, обеспечивая безопасность типов и снижая вероятность ошибок во время выполнения - Производительность — поскольку Templ генерирует Go-код из шаблонов, процесс рендеринга ускоряется, повышается производительность приложения - Синтаксис — Templ предоставляет более выразительный синтаксис, поддерживает компоненты - Интеграция с Go — благодаря генерации Go-кода, Templ обеспечивает тесную интеграцию с остальной частью приложения, позволяя использовать функции и типы Go непосредственно в шаблонах. Более того, в шаблонах можно писать на Go Пример использования 1 — Определение шаблона templ PageComponent(data PageData) { {data.Title} {data.Content} } 2 — Генерация Go-кода templ generate 3 — Использованиеimport ( "fmt" "net/http"

"github.com/a-h/templ" )

func main() { component := PageComponent(PageData{ Title: "Главная страница", Content: "Добро пожаловать на наш сайт!", })

http.Handle("/", templ.Handler(component)) fmt.Println("Listening on :3000") http.ListenAndServe(":3000", nil) }

Другие шаблонизаторы - Jet — шаблонизатор с поддержкой компиляции, но использует собственный DSL вместо Go. Это упрощает написание шаблонов, но делает их менее типобезопасными. В Templ, наоборот, можно использовать Go-типизацию и избежать проблем с runtime-ошибками. - Quicktemplate — один из самых быстрых шаблонизаторов, но его синтаксис не самый удобный для повседневной разработки. Он больше подходит для high-load систем, где важна предельная скорость рендеринга.

Итог По сравнению с иными шаблонизаторами, в Templ мы получаем наилучшее соотношение удобства разработки, поддержки и итоговой производительности. Его можно рассматривать как в рамках fullstack, который мы обсуждаем в курсе, так и вне его — для упрощения работы с шаблонами в целом.```

repost

29

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь