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!