freeCodeCamp/guide/russian/go/use-templates-with-your-web.../index.md

71 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Using templates with your web server
localeTitle: Использование шаблонов с вашим веб-сервером
---
Когда у вас есть веб-сервер, вы можете вставить данные в свои ответы. Посмотрим на код:
```go
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` сначала немного сложна. Давайте разберемся:
```go
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)
}
```
Что мы здесь делаем? Давайте посмотрим шаг за шагом:
1. Мы создаем аблон_ . Вам нужно ввести имя, но на самом деле не важно, какое имя вы выберете. Здесь я выбрал `sayHello` .
2. Затем мы заполняем шаблон некоторым текстом. Обратите внимание на `{{.NAME}}` .
3. Наконец, мы _выполняем_ шаблон. Это означает, что шаблон заполняется и отправляется клиенту.
Но как мы переходим от `{{.NAME}}` к `Mark` ? Ну, помните, мы использовали переменную `page` в качестве параметра для метода `Execute` ? Этот метод просматривает данные в шаблоне и видит `{{.NAME}}` . `.NAME` указывает на то, что он должен выглядеть на поле с именем `NAME` внутри переменной , которая была задана в качестве параметра при `Execute` называется. В этом случае он находит это поле и принимает к сведению, что это значение - `Mark` . `{{` И `}}` сообщают `Execute` что он должен заменить `{{.NAME}}` на найденное значение. Итак, конечным результатом станет `Hello Mark!` ,
Вы можете иметь несколько полей и несколько `{{.XXX}}` . Это очень простой способ вставить данные в ответы, и теперь вы знаете, как создавать шаблоны в Go!