package
0.0.0-20240407120403-8f3d0ab40757
Repository: https://github.com/mingadinga/go-webserver.git
Documentation: pkg.go.dev

# README

템플릿으로 HTML 만들기

템플릿 패턴 : 변하지 않는 부분과 변하는 부분을 분리

템플릿 문법

  • 변수 값 사용 : {{.VARNAME}}
  • 조건문 : {{if 조건식}} ~~~ {{else}} ~~~ {{end}}
  • 공백 제거 : 조건식 괄호 앞뒤로 - 사용
  • 템플릿 내부에 템플릿 사용 : {{template "tmpl1.tmpl" .}}
  • range 사용 : {{range .}} .로 현재 value 접근 {{end}}
Name: {{.Name}}
Email: {{.Email}}
{{if .IsOld -}}
OldAge: {{.Age}}
{{else -}}
Age: {{.Age}}
{{- end}}

<a href="/user?email={{.Email}}">user</a>
<script>
var email = {{.Email}}
var name = {{.Name}}
var age = {{.Age}}
</script>

<html>
<head>
    <title>Template</title>
</head>
<body>
{{range .}}
{{template "tmpl1.tmpl" .}} <!-- 틀 안의 틀 -->
{{end}}
</body>
</html>

변하는 부분 만들어서 템플릿 만들기

type User struct {
	Name  string
	Email string
	Age   int
}

func (u User) IsOld() bool {
	return u.Age > 20
}

func main() {
	user1 := User{Name: "tucker", Email: "[email protected]", Age: 23}
	user2 := User{Name: "aaa", Email: "[email protected]", Age: 18}
	users := []User{user1, user2}

	tmpl, err := template.New("Impl1").ParseFiles("template/tmpl1.tmpl", "template/tmpl2.tmpl")
	if err != nil {
		panic(err)
	}

	// 단일 엔티티
	tmpl.ExecuteTemplate(os.Stdout, "tmpl2.tmpl", user1) // tmpl(변하지 않는 부분)에 user(변하는 부분) 데이터를 채워라
	tmpl.ExecuteTemplate(os.Stdout, "tmpl2.tmpl", user2)

	// range
	tmpl.ExecuteTemplate(os.Stdout, "tmpl2.tmpl", users)
}

# Structs

No description provided by the author