4.0 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Using templates with your web server | Использование шаблонов с вашим веб-сервером |
Когда у вас есть веб-сервер, вы можете вставить данные в свои ответы. Посмотрим на код:
package main
import (
"net/http"
"html/template"
)
type PAGE struct {
NAME string
}
var page PAGE
func main() {
page.NAME = "Mark"
http.HandleFunc("/", servePage)
http.ListenAndServe(":8080", nil)
}
func servePage(writer http.ResponseWriter, reqest *http.Request) {
template := template.New("sayHello")
template, _ = template.Parse("Hello {{.NAME}}!")
template.Execute(writer, page)
}
Теперь запустите эту программу и перейдите в свой браузер, чтобы:
http://localhost:8080/
Ответ будет следующим:
Hello Mark!
Но как это работает и что делает код? Ну, прежде всего, мы импортируем пакет net/http , чтобы мы могли запускать веб-сервер. Затем мы импортируем пакет html/template . Это позволяет использовать функцию templating; и вот о чем эта статья.
Мы также создаем тип PAGE , который имеет одно поле под названием NAME как string типа. Мы также создаем глобальную переменную, называемую page типа PAGE , созданной нами структурой. В main функции мы даем поле NAME page значение Mark - мое имя, но не стесняйтесь использовать свое имя!
Функция servePage сначала немного сложна. Давайте разберемся:
func servePage(writer http.ResponseWriter, reqest *http.Request) {
// 1. Creating a template
template := template.New("sayHello")
// 2. Filling the template
template, _ = template.Parse("Hello {{.NAME}}!")
// 3. Executing the template
template.Execute(writer, page)
}
Что мы здесь делаем? Давайте посмотрим шаг за шагом:
- Мы создаем шаблон . Вам нужно ввести имя, но на самом деле не важно, какое имя вы выберете. Здесь я выбрал
sayHello. - Затем мы заполняем шаблон некоторым текстом. Обратите внимание на
{{.NAME}}. - Наконец, мы выполняем шаблон. Это означает, что шаблон заполняется и отправляется клиенту.
Но как мы переходим от {{.NAME}} к Mark ? Ну, помните, мы использовали переменную page в качестве параметра для метода Execute ? Этот метод просматривает данные в шаблоне и видит {{.NAME}} . .NAME указывает на то, что он должен выглядеть на поле с именем NAME внутри переменной , которая была задана в качестве параметра при Execute называется. В этом случае он находит это поле и принимает к сведению, что это значение - Mark . {{ И }} сообщают Execute что он должен заменить {{.NAME}} на найденное значение. Итак, конечным результатом станет Hello Mark! ,
Вы можете иметь несколько полей и несколько {{.XXX}} . Это очень простой способ вставить данные в ответы, и теперь вы знаете, как создавать шаблоны в Go!